mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-20 04:24:36 +08:00
Help/guide: use GNUInstallDirs in importing-exporting example
This allows the example to also show how to work on systems with different libdir settings (e.g., Debian multiarch or Red Hat multilib) rather than a regular `lib` directory.
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
cmake_minimum_required(VERSION 3.15)
|
cmake_minimum_required(VERSION 3.15)
|
||||||
project(MathFunctions)
|
project(MathFunctions)
|
||||||
|
|
||||||
|
# make cache variables for install destinations
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# specify the C++ standard
|
# specify the C++ standard
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
@@ -12,26 +15,26 @@ add_library(MathFunctions STATIC MathFunctions.cxx)
|
|||||||
target_include_directories(MathFunctions
|
target_include_directories(MathFunctions
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
||||||
"$<INSTALL_INTERFACE:include>"
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||||
)
|
)
|
||||||
|
|
||||||
# install the target and create export-set
|
# install the target and create export-set
|
||||||
install(TARGETS MathFunctions
|
install(TARGETS MathFunctions
|
||||||
EXPORT MathFunctionsTargets
|
EXPORT MathFunctionsTargets
|
||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
INCLUDES DESTINATION include
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# install header file
|
# install header file
|
||||||
install(FILES MathFunctions.h DESTINATION include)
|
install(FILES MathFunctions.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
# generate and install export file
|
# generate and install export file
|
||||||
install(EXPORT MathFunctionsTargets
|
install(EXPORT MathFunctionsTargets
|
||||||
FILE MathFunctionsTargets.cmake
|
FILE MathFunctionsTargets.cmake
|
||||||
NAMESPACE MathFunctions::
|
NAMESPACE MathFunctions::
|
||||||
DESTINATION lib/cmake/MathFunctions
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
)
|
)
|
||||||
|
|
||||||
# include CMakePackageConfigHelpers macro
|
# include CMakePackageConfigHelpers macro
|
||||||
@@ -58,14 +61,14 @@ write_basic_package_version_file(
|
|||||||
# create config file
|
# create config file
|
||||||
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
||||||
INSTALL_DESTINATION lib/cmake/MathFunctions
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
)
|
)
|
||||||
|
|
||||||
# install config files
|
# install config files
|
||||||
install(FILES
|
install(FILES
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
|
||||||
DESTINATION lib/cmake/MathFunctions
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
)
|
)
|
||||||
|
|
||||||
# generate the export targets for the build tree
|
# generate the export targets for the build tree
|
||||||
|
@@ -7,24 +7,24 @@ add_library(MathFunctions::Addition ALIAS Addition)
|
|||||||
target_include_directories(Addition
|
target_include_directories(Addition
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
||||||
$<INSTALL_INTERFACE:include>
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
)
|
)
|
||||||
|
|
||||||
# install the target and create export-set
|
# install the target and create export-set
|
||||||
install(TARGETS Addition
|
install(TARGETS Addition
|
||||||
EXPORT AdditionTargets
|
EXPORT AdditionTargets
|
||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
INCLUDES DESTINATION include
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# install header file
|
# install header file
|
||||||
install(FILES Addition.h DESTINATION include)
|
install(FILES Addition.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
# generate and install export file
|
# generate and install export file
|
||||||
install(EXPORT AdditionTargets
|
install(EXPORT AdditionTargets
|
||||||
FILE MathFunctionsAdditionTargets.cmake
|
FILE MathFunctionsAdditionTargets.cmake
|
||||||
NAMESPACE MathFunctions::
|
NAMESPACE MathFunctions::
|
||||||
DESTINATION lib/cmake/MathFunctions
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
)
|
)
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
cmake_minimum_required(VERSION 3.15)
|
cmake_minimum_required(VERSION 3.15)
|
||||||
project(MathFunctionsComponents)
|
project(MathFunctionsComponents)
|
||||||
|
|
||||||
|
# make cache variables for install destinations
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# specify the C++ standard
|
# specify the C++ standard
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
@@ -24,7 +27,7 @@ write_basic_package_version_file(
|
|||||||
# create config file
|
# create config file
|
||||||
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
||||||
INSTALL_DESTINATION lib/cmake/MathFunctions
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -32,5 +35,5 @@ configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
|||||||
install(FILES
|
install(FILES
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
|
||||||
DESTINATION lib/cmake/MathFunctions
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
)
|
)
|
||||||
|
@@ -7,24 +7,24 @@ add_library(MathFunctions::SquareRoot ALIAS SquareRoot)
|
|||||||
target_include_directories(SquareRoot
|
target_include_directories(SquareRoot
|
||||||
PUBLIC
|
PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
||||||
"$<INSTALL_INTERFACE:include>"
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||||
)
|
)
|
||||||
|
|
||||||
# install the target and create export-set
|
# install the target and create export-set
|
||||||
install(TARGETS SquareRoot
|
install(TARGETS SquareRoot
|
||||||
EXPORT SquareRootTargets
|
EXPORT SquareRootTargets
|
||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
INCLUDES DESTINATION include
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# install header file
|
# install header file
|
||||||
install(FILES SquareRoot.h DESTINATION include)
|
install(FILES SquareRoot.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
# generate and install export file
|
# generate and install export file
|
||||||
install(EXPORT SquareRootTargets
|
install(EXPORT SquareRootTargets
|
||||||
FILE MathFunctionsSquareRootTargets.cmake
|
FILE MathFunctionsSquareRootTargets.cmake
|
||||||
NAMESPACE MathFunctions::
|
NAMESPACE MathFunctions::
|
||||||
DESTINATION lib/cmake/MathFunctions
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||||||
)
|
)
|
||||||
|
@@ -202,6 +202,10 @@ project. Start by specifying the :command:`cmake_minimum_required` version and
|
|||||||
:language: cmake
|
:language: cmake
|
||||||
:end-before: # create library
|
:end-before: # create library
|
||||||
|
|
||||||
|
The :module:`GNUInstallDirs` module is included in order to provide the
|
||||||
|
project with the flexibility to install into different platform layouts by
|
||||||
|
making the directories available as cache variables.
|
||||||
|
|
||||||
Create a library called ``MathFunctions`` with the :command:`add_library`
|
Create a library called ``MathFunctions`` with the :command:`add_library`
|
||||||
command:
|
command:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user