diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e91b48732b0221406d8057aa61229c86dd2ee02..9d679afff150b4605def3ef31e144eb645814afe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,8 +20,20 @@ # limitations under the License. #------------------------------------------------------------------------------ +#------------------------------------------------------------------------------ +# GENERIC PROJECT VARIABLES +#------------------------------------------------------------------------------ +# Name of Project: ${projectname_lowercase} +# NAME OF PROJECT: ${projectname_uppercase} +# Abbreviation of Project and its library folder: ${projectname_abbreviation} +#------------------------------------------------------------------------------ + cmake_minimum_required(VERSION 3.8.2) +set(projectname_lowercase "phoenix") +string(TOUPPER ${projectname_lowercase} projectname_uppercase) +set(projectname_abbreviation phx) + project(ProjectPhoenix) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) diff --git a/cmake/phoenix-config.cmake.in b/cmake/phoenix-config.cmake.in index 410a82491a3ba8e7ecc2c4bc010f48547e67daa2..61a4821058d3840b0d45e0741c263f4f3fde1398 100644 --- a/cmake/phoenix-config.cmake.in +++ b/cmake/phoenix-config.cmake.in @@ -21,17 +21,17 @@ # - Config file for the Project Phoenix package # It defines the following variables -# PHOENIX_INCLUDE_DIRS - include directories for Project Phoenix -# PHOENIX_LIBRARIES - libraries to link against +# ${projectname_uppercase}_INCLUDE_DIRS - include directories for Project Phoenix +# ${projectname_uppercase}_LIBRARIES - libraries to link against # Compute paths -get_filename_component(PHOENIX_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(PHOENIX_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") +get_filename_component(${projectname_uppercase}_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +set(${projectname_uppercase}_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") # Our library dependencies (contains definitions for IMPORTED targets) -if(NOT TARGET phoenix) - include("${PHOENIX_CMAKE_DIR}/phoenix-targets.cmake") +if(NOT TARGET ${projectname_lowercase}) + include("${${projectname_uppercase}_CMAKE_DIR}/${projectname_lowercase}-targets.cmake") endif() -# These are IMPORTED targets created by phoenix-targets.cmake -set(PHOENIX_LIBRARIES phoenix) +# These are IMPORTED targets created by ${projectname_lowercase}-targets.cmake +set(${projectname_uppercase}_LIBRARIES ${projectname_lowercase}) diff --git a/demos/viewer/CMakeLists.txt b/demos/viewer/CMakeLists.txt index cea35965784e4da544e2913c81a668c383b133bb..c16afc340c7c4d82180a106b295fb7b3c3756d78 100644 --- a/demos/viewer/CMakeLists.txt +++ b/demos/viewer/CMakeLists.txt @@ -29,10 +29,10 @@ add_executable(viewer ) target_include_directories(viewer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src - phoenix + ${projectname_lowercase} ) target_link_libraries(viewer - phoenix + ${projectname_lowercase} ) set_warning_levels_RWTH(viewer) add_test_cpplint(NAME "viewer--cpplint" diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 9dc9bc1052dd1720d8f247b10c786894e5490faf..91941f807e6b9d00dbb68af9b96731cedceca756 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -20,27 +20,35 @@ # limitations under the License. #------------------------------------------------------------------------------ -file(GLOB PHOENIX_SOURCES phx/*.cpp) -file(GLOB PHOENIX_HEADERS phx/*.hpp) +#------------------------------------------------------------------------------ +# GENERIC PROJECT VARIABLES +#------------------------------------------------------------------------------ +# Name of Project: ${projectname_lowercase} +# NAME OF PROJECT: ${projectname_uppercase} +# Abbreviation of Project and its library folder: ${projectname_abbreviation} +#------------------------------------------------------------------------------ + +file(GLOB ${projectname_uppercase}_SOURCES ${projectname_abbreviation}/*.cpp) +file(GLOB ${projectname_uppercase}_HEADERS ${projectname_abbreviation}/*.hpp) # configure resources directory include string set(_RESOURCES_ROOT_PATH "${CMAKE_SOURCE_DIR}/resources/") set(SOURCE_RESOURCES_INCLUDE_FILE "${CMAKE_SOURCE_DIR}/cmake/resources_path.hpp.in") -set(TARGET_RESOURCES_INCLUDE_FILE "${CMAKE_CURRENT_BINARY_DIR}/phx/resources_path.hpp") +set(TARGET_RESOURCES_INCLUDE_FILE "${CMAKE_CURRENT_BINARY_DIR}/${projectname_abbreviation}/resources_path.hpp") configure_file(${SOURCE_RESOURCES_INCLUDE_FILE} ${TARGET_RESOURCES_INCLUDE_FILE} @ONLY) -add_library(phoenix - ${PHOENIX_SOURCES} - ${PHOENIX_HEADERS} +add_library(${projectname_lowercase} + ${${projectname_uppercase}_SOURCES} + ${${projectname_uppercase}_HEADERS} ) -target_include_directories(phoenix +target_include_directories(${projectname_lowercase} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} PUBLIC ${OPENGL_INCLUDE_DIR} ) -target_link_libraries(phoenix +target_link_libraries(${projectname_lowercase} ${CONAN_OR_CMAKE_assimp} ${CONAN_OR_CMAKE_gl} ${CONAN_OR_CMAKE_boost} @@ -53,22 +61,22 @@ target_link_libraries(phoenix ${CONAN_OR_CMAKE_jsonformoderncpp} ) -generate_export_header(phoenix - EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/phx/export.hpp +generate_export_header(${projectname_lowercase} + EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/${projectname_abbreviation}/export.hpp ) -set_warning_levels_RWTH(phoenix - SUPPRESS_WARNINGS_HEADER ${CMAKE_CURRENT_BINARY_DIR}/phx/suppress_warnings.hpp +set_warning_levels_RWTH(${projectname_lowercase} + SUPPRESS_WARNINGS_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${projectname_abbreviation}/suppress_warnings.hpp ) -add_test_cpplint(NAME "phoenix--cpplint" - ${PHOENIX_SOURCES} - ${PHOENIX_HEADERS} +add_test_cpplint(NAME "${projectname_lowercase}--cpplint" + ${${projectname_uppercase}_SOURCES} + ${${projectname_uppercase}_HEADERS} ) -add_test_cppcheck(NAME "phoenix--cppcheck" - ${PHOENIX_SOURCES} - ${PHOENIX_HEADERS} +add_test_cppcheck(NAME "${projectname_lowercase}--cppcheck" + ${${projectname_uppercase}_SOURCES} + ${${projectname_uppercase}_HEADERS} ) -generate_configure_files(phoenix) +generate_configure_files(${projectname_lowercase}) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0c516001fb8a2bb48d0353a54fac5d8469af3628..05ccfa3253b704f29b1ebe2c39c04364aec1afad 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -20,6 +20,16 @@ # limitations under the License. #------------------------------------------------------------------------------ +#------------------------------------------------------------------------------ +# GENERIC PROJECT VARIABLES +#------------------------------------------------------------------------------ +# Name of Project: ${projectname_lowercase} +# NAME OF PROJECT: ${projectname_uppercase} +# Abbreviation of Project and its library folder: ${projectname_abbreviation} +#------------------------------------------------------------------------------ + +#message(STATUS "In test level cmake-file we detected:\n${projectname_lowercase} and ${projectname_uppercase} and ${projectname_abbreviation}/") + #see at the bottom how to add mocked tests # configure reference image directory include string @@ -28,17 +38,17 @@ set(SOURCE_REFIMAGE_INCLUDE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/test_utilities/ref set(TARGET_REFIMAGE_INCLUDE_FILE "${CMAKE_CURRENT_BINARY_DIR}/test_utilities/reference_image_path.hpp") configure_file(${SOURCE_REFIMAGE_INCLUDE_FILE} ${TARGET_REFIMAGE_INCLUDE_FILE} @ONLY) -file(GLOB PHOENIX_TEST_SOURCES src/*.cpp) -file(GLOB PHOENIX_TEST_HEADERS src/*.hpp) -file(GLOB PHOENIX_TEST_UTILITIES_TEST_SOURCES test_utilities/tests/src/*.cpp) -file(GLOB PHOENIX_TEST_UTILITIES_HEADERS test_utilities/*.hpp) -file(GLOB PHOENIX_TEST_UTILITIES_SOURCES test_utilities/*.cpp) +file(GLOB ${projectname_uppercase}_TEST_SOURCES src/*.cpp) +file(GLOB ${projectname_uppercase}_TEST_HEADERS src/*.hpp) +file(GLOB ${projectname_uppercase}_TEST_UTILITIES_TEST_SOURCES test_utilities/tests/src/*.cpp) +file(GLOB ${projectname_uppercase}_TEST_UTILITIES_HEADERS test_utilities/*.hpp) +file(GLOB ${projectname_uppercase}_TEST_UTILITIES_SOURCES test_utilities/*.cpp) #get the include directories get_target_property(glew_include_directories ${CONAN_OR_CMAKE_glew} INTERFACE_INCLUDE_DIRECTORIES) -get_target_property(phoenix_include_directories - phoenix INCLUDE_DIRECTORIES) +get_target_property(${projectname_lowercase}_include_directories + ${projectname_lowercase} INCLUDE_DIRECTORIES) get_target_property(sdl2_include_directories ${CONAN_OR_CMAKE_SDL2} INTERFACE_INCLUDE_DIRECTORIES) get_target_property(openvr_include_directories @@ -102,8 +112,8 @@ endif(MSVC) # generate test_utilities add_library(test_utilities STATIC - ${PHOENIX_TEST_UTILITIES_SOURCES} - ${PHOENIX_TEST_UTILITIES_HEADERS} + ${${projectname_uppercase}_TEST_UTILITIES_SOURCES} + ${${projectname_uppercase}_TEST_UTILITIES_HEADERS} ) set_target_properties(test_utilities PROPERTIES LINKER_LANGUAGE CXX) set_property(TARGET test_utilities PROPERTY FOLDER "Tests") @@ -113,7 +123,7 @@ target_include_directories(test_utilities target_link_libraries(test_utilities ${CONAN_OR_CMAKE_gl} ${CONAN_OR_CMAKE_catch} - phoenix) + ${projectname_lowercase}) set_warning_levels_rwth(test_utilities) @@ -138,34 +148,34 @@ macro(add_mocked_test cpp_file) cmake_parse_arguments(ADD_MOCKED_TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - list(REMOVE_ITEM PHOENIX_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/${cpp_file}.cpp) + list(REMOVE_ITEM ${projectname_uppercase}_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/${cpp_file}.cpp) set(test_sources src/tests.cpp src/${cpp_file}.cpp) add_executable(${cpp_file} ${test_sources}) - add_dependencies(${cpp_file} phoenix test_utilities) + add_dependencies(${cpp_file} ${projectname_lowercase} test_utilities) ADD_TEST_CATCH_INTERNAL_(${cpp_file} ${test_sources} "") # make shure linker dependency injection works target_include_directories(${cpp_file} - PRIVATE ${phoenix_include_directories} + PRIVATE ${${projectname_lowercase}_include_directories} PRIVATE ${glew_include_directories} PRIVATE ${gl_include_directories} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) - get_target_property(phoenix_link_libraries phoenix LINK_LIBRARIES) + get_target_property(${projectname_lowercase}_link_libraries ${projectname_lowercase} LINK_LIBRARIES) if(${ADD_MOCKED_TEST_MOCK_GLEW}) - list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_gl}) - list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_glew}) + list(REMOVE_ITEM ${projectname_lowercase}_link_libraries ${CONAN_OR_CMAKE_gl}) + list(REMOVE_ITEM ${projectname_lowercase}_link_libraries ${CONAN_OR_CMAKE_glew}) #SDL has also to be removed since it contains OpenGL - list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_SDL2}) - list(REMOVE_ITEM phoenix_link_libraries ${OPENGL_LIBRARIES}) - list(APPEND phoenix_link_libraries opengl_mock) - list(APPEND phoenix_link_libraries ${gl_link_library}) + list(REMOVE_ITEM ${projectname_lowercase}_link_libraries ${CONAN_OR_CMAKE_SDL2}) + list(REMOVE_ITEM ${projectname_lowercase}_link_libraries ${OPENGL_LIBRARIES}) + list(APPEND ${projectname_lowercase}_link_libraries opengl_mock) + list(APPEND ${projectname_lowercase}_link_libraries ${gl_link_library}) endif(${ADD_MOCKED_TEST_MOCK_GLEW}) @@ -176,19 +186,19 @@ macro(add_mocked_test cpp_file) target_compile_definitions(${cpp_file} PRIVATE TESTING) target_include_directories(${cpp_file} PRIVATE ${sdl2_include_directories}) - list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_SDL2}) + list(REMOVE_ITEM ${projectname_lowercase}_link_libraries ${CONAN_OR_CMAKE_SDL2}) endif(${ADD_MOCKED_TEST_MOCK_SDL}) if(${ADD_MOCKED_TEST_MOCK_OPENVR}) - list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_openvr}) - list(APPEND phoenix_link_libraries openvr_mock) + list(REMOVE_ITEM ${projectname_lowercase}_link_libraries ${CONAN_OR_CMAKE_openvr}) + list(APPEND ${projectname_lowercase}_link_libraries openvr_mock) endif(${ADD_MOCKED_TEST_MOCK_OPENVR}) target_link_libraries(${cpp_file} ${CONAN_OR_CMAKE_trompeloeil} ${CONAN_OR_CMAKE_catch} - $<TARGET_FILE:phoenix> - ${phoenix_link_libraries} + $<TARGET_FILE:${projectname_lowercase}> + ${${projectname_lowercase}_link_libraries} $<TARGET_FILE:test_utilities> ) endmacro() @@ -197,20 +207,20 @@ endmacro() # these have to go before the mocked tests. # Otherwise, the mocked ones are not in PHOENIX_TEST_SOURCES anymore -add_test_cppcheck(NAME "phoenix-tests--cppcheck" - ${PHOENIX_TEST_SOURCES} - ${PHOENIX_TEST_HEADERS} - ${PHOENIX_TEST_UTILITIES_TEST_SOURCES} - ${PHOENIX_TEST_UTILITIES_HEADERS} - ${PHOENIX_TEST_UTILITIES_SOURCES} +add_test_cppcheck(NAME "${projectname_lowercase}-tests--cppcheck" + ${${projectname_uppercase}_TEST_SOURCES} + ${${projectname_uppercase}_TEST_HEADERS} + ${${projectname_uppercase}_TEST_UTILITIES_TEST_SOURCES} + ${${projectname_uppercase}_TEST_UTILITIES_HEADERS} + ${${projectname_uppercase}_TEST_UTILITIES_SOURCES} ) -add_test_cpplint(NAME "phoenix-tests--cpplint" - ${PHOENIX_TEST_SOURCES} - ${PHOENIX_TEST_HEADERS} - ${PHOENIX_TEST_UTILITIES_TEST_SOURCES} - ${PHOENIX_TEST_UTILITIES_HEADERS} - ${PHOENIX_TEST_UTILITIES_SOURCES} +add_test_cpplint(NAME "${projectname_lowercase}-tests--cpplint" + ${${projectname_uppercase}_TEST_SOURCES} + ${${projectname_uppercase}_TEST_HEADERS} + ${${projectname_uppercase}_TEST_UTILITIES_TEST_SOURCES} + ${${projectname_uppercase}_TEST_UTILITIES_HEADERS} + ${${projectname_uppercase}_TEST_UTILITIES_SOURCES} ) #------------------------------------------------------------------------------- @@ -235,12 +245,12 @@ add_mocked_test(integration_test_rendering MOCK_OPENVR) #------------------------------------------------------------------------------- -add_test_catch(NAME "phoenix-tests" - SOURCES ${PHOENIX_TEST_SOURCES} ${PHOENIX_TEST_UTILITIES_TEST_SOURCES} - HEADERS ${PHOENIX_TEST_HEADERS} +add_test_catch(NAME "${projectname_lowercase}-tests" + SOURCES ${${projectname_uppercase}_TEST_SOURCES} ${${projectname_uppercase}_TEST_UTILITIES_TEST_SOURCES} + HEADERS ${${projectname_uppercase}_TEST_HEADERS} CATCH_MAIN src/tests.cpp - INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} phoenix - LINK_LIBRARIES phoenix test_utilities + INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${projectname_lowercase} + LINK_LIBRARIES ${projectname_lowercase} test_utilities PATH_TO_ADD ${PROJECT_BINARY_DIR}/library )