Skip to content
Snippets Groups Projects
Commit 39150b68 authored by moenck's avatar moenck
Browse files

Updated naming scheme, toolchain and versioning

parent 579650db
No related branches found
No related tags found
No related merge requests found
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"
)
......
##############################################################
#### 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
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()
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()
@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)
......
0.2.0
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment