Skip to content
This repository was archived by the owner on Aug 30, 2022. It is now read-only.

Commit a758f0c

Browse files
vadorovskyisaachier
authored andcommitted
cmake: Use GNUInstallDirs instead of hardcoding lib destination (#102)
The comon practice in cmake to allow to specify the libdir is using GNUInstallDirs and the CMAKE_INSTALL_LIBDIR variable. One of the usecases is setting /usr/lib64 as the destination dir for libraries. Signed-off-by: Michal Rostecki <[email protected]>
1 parent 75191fc commit a758f0c

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

CMakeLists.txt

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -340,12 +340,17 @@ endif()
340340

341341
# Installation (https://github.com/forexample/package-example)
342342

343+
# Introduce variables:
344+
# * CMAKE_INSTALL_LIBDIR
345+
# * CMAKE_INSTALL_BINDIR
346+
# * CMAKE_INSTALL_INCLUDEDIR
347+
include(GNUInstallDirs)
348+
343349
# Layout. This works for all platforms:
344-
# * <prefix>/lib/cmake/<PROJECT-NAME>
345-
# * <prefix>/lib/
350+
# * <prefix>/lib*/cmake/<PROJECT-NAME>
351+
# * <prefix>/lib*/
346352
# * <prefix>/include/
347-
set(config_install_dir "lib/cmake/${PROJECT_NAME}")
348-
set(include_install_dir "include")
353+
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
349354

350355
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
351356

@@ -376,42 +381,42 @@ configure_package_config_file(
376381
)
377382

378383
# Targets:
379-
# * <prefix>/lib/libjaegertracing.a
380-
# * <prefix>/lib/libjaegertracing.so
384+
# * <prefix>/lib*/libjaegertracing.a
385+
# * <prefix>/lib*/libjaegertracing.so
381386
# * header location after install: <prefix>/include/jaegertracing/Tracer.h
382387
# * headers can be included by C++ code `#include <jaegertracing/Tracer.h>`
383388
install(
384389
TARGETS ${JAEGERTRACING_LIBS}
385390
EXPORT "${TARGETS_EXPORT_NAME}"
386-
LIBRARY DESTINATION "lib"
387-
ARCHIVE DESTINATION "lib"
388-
RUNTIME DESTINATION "bin"
389-
INCLUDES DESTINATION "${include_install_dir}"
391+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
392+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
393+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
394+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
390395
)
391396

392397
# Headers:
393398
# * src/jaegertracing/Tracer.h -> <prefix>/include/jaegertracing/Tracer.h
394399
install(DIRECTORY "src/jaegertracing"
395-
DESTINATION "${include_install_dir}"
400+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
396401
FILES_MATCHING
397402
PATTERN "*.h"
398403
PATTERN "testutils/*.h" EXCLUDE)
399404

400405
# * build/src/jaegertracing/Constants.h ->
401406
# <prefix>/include/jaegertracing/Constants.h
402407
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/src/jaegertracing/Constants.h"
403-
DESTINATION "${include_install_dir}/jaegertracing")
408+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/jaegertracing")
404409

405410
# Config
406-
# * <prefix>/lib/cmake/jaegertracing/jaegertracingConfig.cmake
407-
# * <prefix>/lib/cmake/jaegertracing/jaegertracingConfigVersion.cmake
411+
# * <prefix>/lib*/cmake/jaegertracing/jaegertracingConfig.cmake
412+
# * <prefix>/lib*/cmake/jaegertracing/jaegertracingConfigVersion.cmake
408413
install(
409414
FILES "${project_config}" "${version_config}"
410415
DESTINATION "${config_install_dir}"
411416
)
412417

413418
# Config
414-
# * <prefix>/lib/cmake/jaegertracing/jaegertracingTargets.cmake
419+
# * <prefix>/lib*/cmake/jaegertracing/jaegertracingTargets.cmake
415420
install(
416421
EXPORT "${TARGETS_EXPORT_NAME}"
417422
NAMESPACE "${namespace}"

0 commit comments

Comments
 (0)