diff --git a/CMakeLists.txt b/CMakeLists.txt index f09b8fa7f3..2452dcfdec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -207,18 +207,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 4118e26256..f9202924cc 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 0558740809..66b1907b8c 100644 --- a/cmake/helper_functions/ecal_install_functions.cmake +++ b/cmake/helper_functions/ecal_install_functions.cmake @@ -138,7 +138,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 59998dfefe..a6d9cd7513 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 29e4de4b98..9b753a1fcb 100644 --- a/ecal/core/CMakeLists.txt +++ b/ecal/core/CMakeLists.txt @@ -764,12 +764,12 @@ ecal_install_ecal_shared_library(${PROJECT_NAME}_c) ecal_install_ecal_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") # install generated ecal_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") if(NOT ${CMAKE_VERSION} VERSION_LESS "3.8.0") @@ -793,4 +793,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 6259f6a56a..6ab84cd160 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/csharp/Continental.eCAL.Core.Test/CMakeLists.txt b/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt index 810e2a36a2..8a28316699 100644 --- a/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt @@ -43,9 +43,9 @@ 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 DESTINATION "${eCAL_install_bin_dir}" COMPONENT runtime + LIBRARY DESTINATION "${eCAL_install_lib_dir}" COMPONENT sdk + PUBLIC_HEADER DESTINATION "${eCAL_install_include_dir}/ecal" 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..b1c42aac56 100644 --- a/lang/csharp/Continental.eCAL.Core/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Core/CMakeLists.txt @@ -39,9 +39,9 @@ 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 DESTINATION "${eCAL_install_bin_dir}" COMPONENT runtime + LIBRARY DESTINATION "${eCAL_install_lib_dir}" COMPONENT sdk + PUBLIC_HEADER DESTINATION "${eCAL_install_include_dir}/ecal" 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..18090823cb 100644 --- a/lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt @@ -43,9 +43,9 @@ 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 DESTINATION "${eCAL_install_bin_dir}" COMPONENT runtime + LIBRARY DESTINATION "${eCAL_install_lib_dir}" COMPONENT sdk + PUBLIC_HEADER DESTINATION "${eCAL_install_include_dir}/ecal" 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..88e8f545f0 100644 --- a/lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt +++ b/lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt @@ -46,9 +46,9 @@ 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 DESTINATION "${eCAL_install_bin_dir}" COMPONENT runtime + LIBRARY DESTINATION "${eCAL_install_lib_dir}" COMPONENT sdk + PUBLIC_HEADER DESTINATION "${eCAL_install_include_dir}/ecal" 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 de11131e15..dc3aa09e30 100644 --- a/thirdparty/hdf5/build-hdf5.cmake +++ b/thirdparty/hdf5/build-hdf5.cmake @@ -28,7 +28,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 @@ -74,4 +75,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)