From 39150b6801dd47e827e770b848d3ffd9d247e8e1 Mon Sep 17 00:00:00 2001 From: Hauke Moenck <hauke_moenck@gmx.de> Date: Wed, 19 Dec 2018 11:03:43 +0100 Subject: [PATCH] Updated naming scheme, toolchain and versioning Signed-off-by: Hauke Moenck <hauke_moenck@gmx.de> --- CMakeLists.txt | 28 ++------- Src/CMakeLists.txt | 61 +++++++++++-------- cmake/Headers.cmake | 8 +++ cmake/TrackerPlugin.cmake | 49 ++++++++------- ...e.in => biotracker-utilityConfig.cmake.in} | 4 +- version.txt | 1 + 6 files changed, 78 insertions(+), 73 deletions(-) create mode 100644 cmake/Headers.cmake rename cmake/{BT_UtilityConfig.cmake.in => biotracker-utilityConfig.cmake.in} (57%) create mode 100644 version.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e319ba..f84b208 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,8 @@ -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) - -project(BT_Utility +project(biotracker-utility VERSION ${GIT_TAG} LANGUAGES CXX) @@ -15,28 +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 BT_Utility) -add_library(${TN} STATIC) -set_target_properties(${TN} PROPERTIES OUTPUT_NAME bt_utility) -include(Src/CMakeLists.txt) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) +include(Headers) -install( - TARGETS - BT_Utility - EXPORT - ${PROJECT_NAME}Targets - RUNTIME DESTINATION "${INSTALL_BINDIR}" - ARCHIVE DESTINATION "${INSTALL_LIBDIR}" -) -foreach(file ${BT_Utility_PUBLIC_HEADERS}) - file(RELATIVE_PATH rel_path "${CMAKE_CURRENT_LIST_DIR}/Src" ${file}) - get_filename_component(install_path ${rel_path} DIRECTORY) - install(FILES ${file} DESTINATION "${INSTALL_INCLUDEDIR}/${install_path}") -endforeach() +add_subdirectory(Src) export( TARGETS - BT_Utility + ${PROJECT_NAME} FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake" ) diff --git a/Src/CMakeLists.txt b/Src/CMakeLists.txt index 53167ff..29e08b9 100644 --- a/Src/CMakeLists.txt +++ b/Src/CMakeLists.txt @@ -1,46 +1,57 @@ ############################################################## #### Biotracker: Utility ############################################################## +set(target ${PROJECT_NAME}) +add_library(${target} STATIC) -target_include_directories(${TN} PUBLIC - $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> - $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> -) +find_package(biotracker-interfaces 0.2 REQUIRED) +target_link_libraries(${target} biotracker-interfaces) -find_package(BT_Interfaces 0.1 REQUIRED) -target_link_libraries(${TN} BT_Interfaces) - -find_package(Qt5 REQUIRED COMPONENTS Core Gui Xml Network Widgets) -target_link_libraries (${TN} Qt5::Core Qt5::Gui Qt5::Xml Qt5::Network Qt5::Widgets) find_package(Boost REQUIRED system filesystem chrono timer) -target_link_libraries(${TN} +target_link_libraries(${target} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_CHRONO_LIBRARY} ${Boost_TIMER_LIBRARY} ) -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 +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}> +) + +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} +target_sources(${target} PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/Utility/TrackedComponents/TrackedComponentFactory.cpp" - "${CMAKE_CURRENT_LIST_DIR}/Utility/TrackedComponents/TrackedElement.cpp" - "${CMAKE_CURRENT_LIST_DIR}/Utility/TrackedComponents/TrackedTrajectory.cpp" - "${CMAKE_CURRENT_LIST_DIR}/Utility/misc.cpp" - "${CMAKE_CURRENT_LIST_DIR}/Utility/IConfig.cpp" + "Utility/TrackedComponents/TrackedComponentFactory.cpp" + "Utility/TrackedComponents/TrackedElement.cpp" + "Utility/TrackedComponents/TrackedTrajectory.cpp" + "Utility/misc.cpp" + "Utility/IConfig.cpp" ) -set(${TN}_PUBLIC_HEADERS - "${CMAKE_CURRENT_LIST_DIR}/Utility/TrackedComponents/TrackedComponentFactory.h" - "${CMAKE_CURRENT_LIST_DIR}/Utility/TrackedComponents/TrackedElement.h" - "${CMAKE_CURRENT_LIST_DIR}/Utility/TrackedComponents/TrackedTrajectory.h" - "${CMAKE_CURRENT_LIST_DIR}/Utility/misc.h" - "${CMAKE_CURRENT_LIST_DIR}/Utility/IConfig.h" +install_headers( + HEADERS + "Utility/TrackedComponents/TrackedComponentFactory.h" + "Utility/TrackedComponents/TrackedElement.h" + "Utility/TrackedComponents/TrackedTrajectory.h" + "Utility/misc.h" + "Utility/IConfig.h" + DESTINATION "${INSTALL_INCLUDEDIR}" ) \ No newline at end of file diff --git a/cmake/Headers.cmake b/cmake/Headers.cmake new file mode 100644 index 0000000..5e3dfec --- /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/TrackerPlugin.cmake b/cmake/TrackerPlugin.cmake index c04591b..e8e2178 100644 --- a/cmake/TrackerPlugin.cmake +++ b/cmake/TrackerPlugin.cmake @@ -1,28 +1,31 @@ -exec_program("git" ${CMAKE_CURRENT_SOURCE_DIR} ARGS "log --pretty=format:%h -n 1" OUTPUT_VARIABLE CURRENT_GIT_HASH) +function(add_behavior_plugin target) -add_definitions(-DCURRENT_GIT_HASH="${CURRENT_GIT_HASH}") + exec_program("git" ${CMAKE_CURRENT_SOURCE_DIR} ARGS "log --pretty=format:%h -n 1" OUTPUT_VARIABLE GIT_HASH) -if("$ENV{USERNAME}" STREQUAL "ContainerAdministrator") - # Note: This is a workaround for Qt5's "moc" in Windows Docker getting - # "System cannot find the file" errors when trying to read - # files generated by "configure_file" in conventional directories. - set(METADATA_DIR "$ENV{TMP}/${TN}") -else() - set(METADATA_DIR "${CMAKE_CURRENT_BINARY_DIR}") -endif() + if("$ENV{USERNAME}" STREQUAL "ContainerAdministrator") + # Note: This is a workaround for Qt5's "moc" in Windows Docker getting + # "System cannot find the file" errors when trying to read + # files generated by "configure_file" in conventional directories. + set(METADATA_DIR "$ENV{TMP}/${target}") + else() + set(METADATA_DIR "${CMAKE_CURRENT_BINARY_DIR}") + endif() -add_library (${TN} MODULE) + add_library (${target} MODULE ${ARGN}) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/plugin.json.in ${METADATA_DIR}/plugin.json) -target_include_directories(${TN} PRIVATE ${METADATA_DIR}) + target_compile_definitions(${target} PRIVATE CURRENT_GIT_HASH="${GIT_HASH}") -set_target_properties(${TN} PROPERTIES PREFIX "") -set_target_properties(${TN} PROPERTIES OUTPUT_NAME ${TN}) -set_target_properties(${TN} PROPERTIES AUTOMOC ON AUTOUIC ON AUTORCC ON) -set_target_properties(${TN} PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES - CXX_EXTENSIONS NO -) - -target_link_libraries (${TN} BT_Utility) \ No newline at end of file + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/plugin.json.in ${METADATA_DIR}/plugin.json) + target_include_directories(${target} PRIVATE ${METADATA_DIR}) + + set_target_properties(${target} PROPERTIES PREFIX "") + set_target_properties(${target} PROPERTIES OUTPUT_NAME ${target}) + 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_link_libraries (${target} biotracker-utility) +endfunction() diff --git a/cmake/BT_UtilityConfig.cmake.in b/cmake/biotracker-utilityConfig.cmake.in similarity index 57% rename from cmake/BT_UtilityConfig.cmake.in rename to cmake/biotracker-utilityConfig.cmake.in index 036377b..f1752c3 100644 --- a/cmake/BT_UtilityConfig.cmake.in +++ b/cmake/biotracker-utilityConfig.cmake.in @@ -1,8 +1,6 @@ @PACKAGE_INIT@ -find_package(BT_Interfaces 0.1 REQUIRED) - -find_package(Qt5 REQUIRED COMPONENTS Core Gui Xml Network Widgets) +find_package(biotracker-interfaces 0.2 REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake) diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..341cf11 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.2.0 \ No newline at end of file -- GitLab