Skip to content

Commit

Permalink
[cmake] Use GNU install dirs variables instead of hardcoded value (#1892
Browse files Browse the repository at this point in the history
)
  • Loading branch information
DownerCase authored Feb 4, 2025
1 parent a9435e5 commit e189300
Show file tree
Hide file tree
Showing 21 changed files with 42 additions and 44 deletions.
12 changes: 0 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand Down
5 changes: 4 additions & 1 deletion app/app_pb/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions app/apps/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
#set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER contrib)
2 changes: 1 addition & 1 deletion app/mon/mon_plugin_lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
2 changes: 1 addition & 1 deletion app/rec/rec_addon_core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand Down
2 changes: 1 addition & 1 deletion cmake/helper_functions/ecal_install_functions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion contrib/ecalhdf5/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
5 changes: 4 additions & 1 deletion contrib/ecaltime/ecaltime_pb/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion contrib/measurement/base/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)


2 changes: 1 addition & 1 deletion contrib/measurement/hdf5/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
6 changes: 3 additions & 3 deletions ecal/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
endif(UNIX)
5 changes: 4 additions & 1 deletion ecal/core_pb/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion lang/c/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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")


Expand Down
2 changes: 2 additions & 0 deletions lang/csharp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions lang/csharp/Continental.eCAL.Core.Test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
5 changes: 2 additions & 3 deletions lang/csharp/Continental.eCAL.Core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
5 changes: 2 additions & 3 deletions lang/csharp/Continental.eCAL.Protobuf.Test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
5 changes: 2 additions & 3 deletions lang/csharp/Continental.eCAL.Protobuf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
5 changes: 3 additions & 2 deletions thirdparty/asio/build-asio.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
include_guard(GLOBAL)

include(GNUInstallDirs)
add_library(asio INTERFACE EXCLUDE_FROM_ALL)
target_include_directories(asio INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/asio/asio/include>
Expand All @@ -20,7 +21,7 @@ install(
install(
EXPORT asioTargets
FILE asioTargets.cmake
DESTINATION lib/CMake
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
NAMESPACE asio::
COMPONENT asio_dev
)
)
3 changes: 2 additions & 1 deletion thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 3 additions & 2 deletions thirdparty/hdf5/build-hdf5.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
set(BUILD_SHARED_LIBS ${OLD_BUILD_SHARED_LIBS} CACHE BOOL "Build hdf5 shared" FORCE)

0 comments on commit e189300

Please sign in to comment.