diff --git a/CMakeLists.txt b/CMakeLists.txt index 859c3136e4..a12bfcb812 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,18 +309,6 @@ endif() # -------------------------------------------------------- # offer the user the choice of overriding the installation directories # -------------------------------------------------------- -set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries") -set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables") -set(INSTALL_INCLUDE_DIR include CACHE PATH - "Installation directory for header files") -if(WIN32 AND NOT CYGWIN) - set(DEF_INSTALL_CMAKE_DIR CMake) -else() - set(DEF_INSTALL_CMAKE_DIR lib/CMake/eCAL) -endif() -set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH - "Installation directory for CMake files") - include(GNUInstallDirs) set(eCAL_install_app_dir ${CMAKE_INSTALL_BINDIR}) set(eCAL_install_archive_dir ${CMAKE_INSTALL_LIBDIR}) diff --git a/app/app_pb/CMakeLists.txt b/app/app_pb/CMakeLists.txt index 0b2dc7e8e4..aba4a91ae4 100644 --- a/app/app_pb/CMakeLists.txt +++ b/app/app_pb/CMakeLists.txt @@ -59,7 +59,10 @@ endif() add_library(eCAL::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) -protobuf_target_cpp(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src INSTALL_FOLDER include ${ProtoFiles}) +protobuf_target_cpp(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src + INSTALL_FOLDER "${eCAL_install_include_dir}" + ${ProtoFiles} +) target_compile_options(${PROJECT_NAME} PRIVATE diff --git a/app/apps/CMakeLists.txt b/app/apps/CMakeLists.txt index 2a88de0679..2e4c3d616b 100644 --- a/app/apps/CMakeLists.txt +++ b/app/apps/CMakeLists.txt @@ -31,9 +31,9 @@ target_include_directories(${PROJECT_NAME} INTERFACE #install( # DIRECTORY "include/" -# DESTINATION "${INSTALL_INCLUDE_DIR}" +# DESTINATION "${eCAL_install_include_dir}" # COMPONENT sdk # FILES_MATCHING PATTERN "*.h" #) -#set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER contrib) \ No newline at end of file +#set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER contrib) diff --git a/app/mon/mon_plugin_lib/CMakeLists.txt b/app/mon/mon_plugin_lib/CMakeLists.txt index bf817acdb3..f7a6f4b708 100644 --- a/app/mon/mon_plugin_lib/CMakeLists.txt +++ b/app/mon/mon_plugin_lib/CMakeLists.txt @@ -53,7 +53,7 @@ target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_14) ecal_install_library(${PROJECT_NAME}) install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk FILES_MATCHING PATTERN "*.h") set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER app/mon) diff --git a/app/rec/rec_addon_core/CMakeLists.txt b/app/rec/rec_addon_core/CMakeLists.txt index 430e8bb6d0..cb86af603f 100644 --- a/app/rec/rec_addon_core/CMakeLists.txt +++ b/app/rec/rec_addon_core/CMakeLists.txt @@ -58,7 +58,7 @@ target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_14) ecal_install_library(${PROJECT_NAME}) install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk FILES_MATCHING PATTERN "*.h") source_group(TREE "${CMAKE_CURRENT_LIST_DIR}" diff --git a/cmake/helper_functions/ecal_install_functions.cmake b/cmake/helper_functions/ecal_install_functions.cmake index c56c07cb41..f805b59737 100644 --- a/cmake/helper_functions/ecal_install_functions.cmake +++ b/cmake/helper_functions/ecal_install_functions.cmake @@ -102,7 +102,7 @@ endfunction() # Samples are sample applications that demonstrate eCAL capability -# They will be installed to "${INSTALL_BIN_DIR}/ecal_samples" +# They will be installed to `${prefix}/share/ecal/samples` function(ecal_install_sample TARGET_NAME) install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION "${eCAL_install_samples_dir}" COMPONENT samples diff --git a/contrib/ecalhdf5/CMakeLists.txt b/contrib/ecalhdf5/CMakeLists.txt index 37b87df48f..cd9073b74b 100644 --- a/contrib/ecalhdf5/CMakeLists.txt +++ b/contrib/ecalhdf5/CMakeLists.txt @@ -137,7 +137,7 @@ source_group(TREE "${CMAKE_CURRENT_LIST_DIR}" ecal_install_library(${PROJECT_NAME}) install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk FILES_MATCHING PATTERN "*.h") set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER contrib) diff --git a/contrib/ecaltime/ecaltime_pb/CMakeLists.txt b/contrib/ecaltime/ecaltime_pb/CMakeLists.txt index 3c4e9982b6..9d6e87e0cc 100644 --- a/contrib/ecaltime/ecaltime_pb/CMakeLists.txt +++ b/contrib/ecaltime/ecaltime_pb/CMakeLists.txt @@ -48,7 +48,10 @@ endif() add_library(eCAL::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) -protobuf_target_cpp(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src INSTALL_FOLDER include ${ProtoFiles}) +protobuf_target_cpp(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src + INSTALL_FOLDER "${eCAL_install_include_dir}" + ${ProtoFiles} +) target_compile_options(${PROJECT_NAME} PRIVATE diff --git a/contrib/measurement/base/CMakeLists.txt b/contrib/measurement/base/CMakeLists.txt index 3e89f6554d..258a0fdf9f 100644 --- a/contrib/measurement/base/CMakeLists.txt +++ b/contrib/measurement/base/CMakeLists.txt @@ -33,7 +33,7 @@ target_include_directories(${PROJECT_NAME} INTERFACE ecal_install_library(${PROJECT_NAME}) install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk ) diff --git a/contrib/measurement/hdf5/CMakeLists.txt b/contrib/measurement/hdf5/CMakeLists.txt index 9e17e8aefc..209d68daaa 100644 --- a/contrib/measurement/hdf5/CMakeLists.txt +++ b/contrib/measurement/hdf5/CMakeLists.txt @@ -42,7 +42,7 @@ target_link_libraries(${PROJECT_NAME} ecal_install_library(${PROJECT_NAME}) install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk ) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER contrib) diff --git a/ecal/core/CMakeLists.txt b/ecal/core/CMakeLists.txt index a0f2802a0e..faacffa3f8 100644 --- a/ecal/core/CMakeLists.txt +++ b/ecal/core/CMakeLists.txt @@ -750,12 +750,12 @@ add_ecal_core_library(${PROJECT_NAME}) ## Iinstall header files only once... ## install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk FILES_MATCHING PATTERN "*.h") # install generated defs.h file install(DIRECTORY - "${CMAKE_CURRENT_BINARY_DIR}/include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "${CMAKE_CURRENT_BINARY_DIR}/include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk FILES_MATCHING PATTERN "*.h") # eCAL process stub @@ -772,4 +772,4 @@ if(UNIX) ecal_install_app(${PROJECT_NAME_PROCESS_STUB}) set_property(TARGET ${PROJECT_NAME_PROCESS_STUB} PROPERTY FOLDER core) -endif(UNIX) \ No newline at end of file +endif(UNIX) diff --git a/ecal/core_pb/CMakeLists.txt b/ecal/core_pb/CMakeLists.txt index 7146a3692e..892e6ea18c 100644 --- a/ecal/core_pb/CMakeLists.txt +++ b/ecal/core_pb/CMakeLists.txt @@ -56,7 +56,10 @@ endif() add_library(eCAL::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) -protobuf_target_cpp(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src INSTALL_FOLDER include ${ProtoFiles}) +protobuf_target_cpp(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src + INSTALL_FOLDER "${eCAL_install_include_dir}" + ${ProtoFiles} +) target_compile_options(${PROJECT_NAME} PRIVATE diff --git a/lang/c/core/CMakeLists.txt b/lang/c/core/CMakeLists.txt index c4649fbc60..4f07d433b9 100644 --- a/lang/c/core/CMakeLists.txt +++ b/lang/c/core/CMakeLists.txt @@ -113,7 +113,7 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER lang/c) ecal_install_shared_library(${PROJECT_NAME}) install(DIRECTORY - "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk + "include/" DESTINATION "${eCAL_install_include_dir}" COMPONENT sdk FILES_MATCHING PATTERN "*.h") diff --git a/lang/csharp/CMakeLists.txt b/lang/csharp/CMakeLists.txt index 8586a75ad9..3517d1d638 100644 --- a/lang/csharp/CMakeLists.txt +++ b/lang/csharp/CMakeLists.txt @@ -19,6 +19,8 @@ # C# build, can be executed standalone against an eCAL installation project(ecal_csharp) +include(GNUInstallDirs) + # Macro to determine the matching protobuf C# version compatible with protoc found. # We should do this differently, but then we need to install protoc via nuget or similar... # Because the Prototbuf Version used for C# bindings is independent from the one we get from the submodules / conan diff --git a/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt b/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt index 810e2a36a2..df3beb0743 100644 --- a/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt @@ -43,9 +43,8 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY install(TARGETS ${PROJECT_NAME} # IMPORTANT: Add the library to the "export-set" EXPORT eCALTargets - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT runtime - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT sdk - PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/ecal" COMPONENT sdk + RUNTIME COMPONENT runtime + LIBRARY COMPONENT sdk ) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER tests/csharp) diff --git a/lang/csharp/Continental.eCAL.Core/CMakeLists.txt b/lang/csharp/Continental.eCAL.Core/CMakeLists.txt index c918aff104..bfdcfef631 100644 --- a/lang/csharp/Continental.eCAL.Core/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Core/CMakeLists.txt @@ -39,9 +39,8 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON) install(TARGETS ${PROJECT_NAME} # IMPORTANT: Add the library to the "export-set" EXPORT eCALTargets - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT runtime - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT sdk - PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/ecal" COMPONENT sdk + RUNTIME COMPONENT runtime + LIBRARY COMPONENT sdk ) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER lang/csharp) diff --git a/lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt b/lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt index 1d6ca615b5..102257a5d1 100644 --- a/lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt @@ -43,9 +43,8 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY install(TARGETS ${PROJECT_NAME} # IMPORTANT: Add the library to the "export-set" EXPORT eCALTargets - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT runtime - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT sdk - PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/ecal" COMPONENT sdk + RUNTIME COMPONENT runtime + LIBRARY COMPONENT sdk ) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER tests/csharp) diff --git a/lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt b/lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt index 7c82155993..aac7235385 100644 --- a/lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt @@ -46,9 +46,8 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY install(TARGETS ${PROJECT_NAME} # IMPORTANT: Add the library to the "export-set" EXPORT eCALTargets - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT runtime - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT sdk - PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/ecal" COMPONENT sdk + RUNTIME COMPONENT runtime + LIBRARY COMPONENT sdk ) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER lang/csharp) diff --git a/thirdparty/asio/build-asio.cmake b/thirdparty/asio/build-asio.cmake index c835e9a012..0d0ea6bf90 100644 --- a/thirdparty/asio/build-asio.cmake +++ b/thirdparty/asio/build-asio.cmake @@ -1,5 +1,6 @@ include_guard(GLOBAL) +include(GNUInstallDirs) add_library(asio INTERFACE EXCLUDE_FROM_ALL) target_include_directories(asio INTERFACE $ @@ -20,7 +21,7 @@ install( install( EXPORT asioTargets FILE asioTargets.cmake - DESTINATION lib/CMake + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake" NAMESPACE asio:: COMPONENT asio_dev -) \ No newline at end of file +) diff --git a/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt b/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt index 8d13b791c1..4d44da2ae7 100644 --- a/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt +++ b/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt @@ -4,11 +4,12 @@ include(cmake_functions.cmake) project(CMakeFunctions VERSION 0.4.1) +include(GNUInstallDirs) if (MSVC) # Variable definitions set(cmake_functions_install_cmake_dir cmake) else (MSVC) -set(cmake_functions_install_cmake_dir lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION}) +set(cmake_functions_install_cmake_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION}") endif (MSVC) set(cmake_functions_config ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake) set(cmake_functions_config_version ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake) diff --git a/thirdparty/hdf5/build-hdf5.cmake b/thirdparty/hdf5/build-hdf5.cmake index 63184a138d..650830db1c 100644 --- a/thirdparty/hdf5/build-hdf5.cmake +++ b/thirdparty/hdf5/build-hdf5.cmake @@ -30,7 +30,8 @@ include_guard(GLOBAL) set(HDF5_BUILD_EXAMPLES OFF CACHE BOOL "Do not build HDF5 Library Examples" FORCE) set(HDF5_BUILD_CPP_LIB OFF CACHE BOOL "Do not build C++ lib" FORCE) set(HDF5_BUILD_HL_LIB OFF CACHE BOOL "Do not build hdf5-hl" FORCE) - + set(HDF5_USE_GNU_DIRS ON CACHE BOOL "Use GNU install dirs" FORCE) + # TODO: Let HDF5 use its own targets. # Adding the HDF5 targets to the eCALCoreTargets is a hack that we have had # before and so I am adding it again, to not break compatibility in eCAL 5.8 @@ -76,4 +77,4 @@ include_guard(GLOBAL) unset(CMAKE_RUNTIME_OUTPUT_DIRECTORY CACHE) endif() - set(BUILD_SHARED_LIBS ${OLD_BUILD_SHARED_LIBS} CACHE BOOL "Build hdf5 shared" FORCE) \ No newline at end of file + set(BUILD_SHARED_LIBS ${OLD_BUILD_SHARED_LIBS} CACHE BOOL "Build hdf5 shared" FORCE)