diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ba94d79b03ed72b92a3a655e3398622baf79f39..da4d5a10a447bf8a54be56532b9c13686680fe56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,10 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.13) exec_program("git" ${CMAKE_CURRENT_SOURCE_DIR} ARGS "describe --abbrev=0 --tags" OUTPUT_VARIABLE GIT_TAG) -cmake_policy (SET CMP0020 NEW) - -message("Git tag: " ${GIT_TAG}) -project(RF_behavior_loader +project(robofish-behavior_loader VERSION ${GIT_TAG} LANGUAGES CXX) - -if("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") - option(PACKAGE_WINDOWS_MSI "Create .msi package" OFF) -endif() include(GNUInstallDirs) @@ -20,32 +13,14 @@ set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory fo set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} CACHE PATH "Installation directory for header files") set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} CACHE STRING "Installation directory for cmake configuration files") -set(TN RF_behavior_loader) -add_library(${TN} STATIC) -set_target_properties(${TN} PROPERTIES OUTPUT_NAME rf_behavior_loader) -include(SrcBehaviorLoader/CMakeLists.txt) - -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - target_link_libraries(${TN} stdc++fs) -endif() +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) +include(Headers) -install( - TARGETS - RF_behavior_loader - EXPORT - ${PROJECT_NAME}Targets - RUNTIME DESTINATION "${INSTALL_BINDIR}" - ARCHIVE DESTINATION "${INSTALL_LIBDIR}" -) -foreach(file ${RF_behavior_loader_PUBLIC_HEADERS}) - file(RELATIVE_PATH rel_path "${CMAKE_CURRENT_LIST_DIR}/SrcBehaviorLoader" ${file}) - get_filename_component(install_path ${rel_path} DIRECTORY) - install(FILES ${file} DESTINATION "${INSTALL_INCLUDEDIR}/${install_path}") -endforeach() +add_subdirectory(SrcBehaviorLoader) export( TARGETS - RF_behavior_loader + ${PROJECT_NAME} FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake" ) @@ -75,12 +50,6 @@ install( DESTINATION ${INSTALL_CONFIGDIR} ) -install( - FILES - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/VSSugar.cmake - DESTINATION ${INSTALL_CONFIGDIR}/Modules/${PROJECT_NAME} -) - set(CPACK_PACKAGE_VERSION ${GIT_TAG}) set(CPACK_GENERATOR "TXZ") diff --git a/SrcBehaviorLoader/CMakeLists.txt b/SrcBehaviorLoader/CMakeLists.txt index 450bdbd6b59346b576a1def4cb5cf59da29ef328..ff310d9dc531c4b1d8fd8eaa6fa0ef900cd99048 100644 --- a/SrcBehaviorLoader/CMakeLists.txt +++ b/SrcBehaviorLoader/CMakeLists.txt @@ -1,28 +1,43 @@ -target_include_directories(${TN} PUBLIC +set(target ${PROJECT_NAME}) +add_library(${target} STATIC) + +install( + TARGETS + ${PROJECT_NAME} + EXPORT + ${PROJECT_NAME}Targets + RUNTIME DESTINATION "${INSTALL_BINDIR}" + ARCHIVE DESTINATION "${INSTALL_LIBDIR}" +) + +target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> ) +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + target_link_libraries(${target} stdc++fs) +endif() + find_package(Qt5 REQUIRED COMPONENTS Core) -target_link_libraries(${TN} Qt5::Core) +target_link_libraries(${target} Qt5::Core) -set_target_properties(${TN} PROPERTIES POSITION_INDEPENDENT_CODE ON) -set_target_properties(${TN} PROPERTIES AUTOMOC ON AUTOUIC ON AUTORCC ON) -set_target_properties(${TN} PROPERTIES +set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON) +set_target_properties(${target} PROPERTIES AUTOMOC ON AUTOUIC ON AUTORCC ON) +set_target_properties(${target} PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED YES CXX_EXTENSIONS NO ) -target_sources(${TN} -PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/PluginLoader.cpp" - +target_sources(${target} + PRIVATE + PluginLoader.cpp ) -set(${TN}_PUBLIC_HEADERS - "${CMAKE_CURRENT_LIST_DIR}/PluginLoader.h" +instalL_headers( + HEADERS + PluginLoader.h + DESTINATION "${INSTALL_INCLUDEDIR}" ) - - diff --git a/cmake/Headers.cmake b/cmake/Headers.cmake new file mode 100644 index 0000000000000000000000000000000000000000..5e3dfec50ae4139c5a2ff075793add0d6563c160 --- /dev/null +++ b/cmake/Headers.cmake @@ -0,0 +1,8 @@ +function(install_headers) + cmake_parse_arguments(ARGS "" "DESTINATION" "HEADERS" ${ARGN}) + + foreach(file ${ARGS_HEADERS}) + get_filename_component(install_path ${file} DIRECTORY) + install(FILES ${file} DESTINATION "${ARGS_DESTINATION}/${install_path}") + endforeach() +endfunction() diff --git a/cmake/VSSugar.cmake b/cmake/VSSugar.cmake deleted file mode 100644 index 494b62e2582c27eb77aa6fa46a334a6e3fb1323f..0000000000000000000000000000000000000000 --- a/cmake/VSSugar.cmake +++ /dev/null @@ -1,16 +0,0 @@ -macro(VSSourceGroups ROOT_PATH) - file( - GLOB_RECURSE sources - LIST_DIRECTORIES false - "${ROOT_PATH}/*.c*" - "${ROOT_PATH}/*.h*" - "${ROOT_PATH}/*.ui*" - ) - - foreach(source IN ITEMS ${sources}) - get_filename_component(path "${source}" PATH) - file(RELATIVE_PATH rel_path "${ROOT_PATH}" "${path}") - string(REPLACE "/" "\\" group_path "${rel_path}") - source_group("${group_path}" FILES "${source}") - endforeach() -endmacro() \ No newline at end of file diff --git a/cmake/RF_behavior_loaderConfig.cmake.in b/cmake/robofish-behavior_loaderConfig.cmake.in similarity index 100% rename from cmake/RF_behavior_loaderConfig.cmake.in rename to cmake/robofish-behavior_loaderConfig.cmake.in