include(GNUInstallDirs)
include(GNUInstallDirs)
是在 CMake 项目中常见的一种做法,主要是为了使用 GNU 标准的目录布局来定义安装目录。
在 CMake 中,GNUInstallDirs
模块提供了一组变量,这些变量表示了标准的 GNU 安装目录。这些变量包括 CMAKE_INSTALL_PREFIX
(安装的根目录)、CMAKE_INSTALL_BINDIR
(可执行文件目录)、CMAKE_INSTALL_LIBDIR
(库文件目录)等等。
使用 include(GNUInstallDirs)
会自动设置这些变量,使得在不同系统上能够使用相同的 CMakeLists.txt 文件,并且符合 GNU 标准。这样,你可以在你的项目中使用这些变量,而不用硬编码目录路径,从而提高了你的项目的可移植性。
以下是一个简单的例子,演示了如何使用 GNUInstallDirs
:
cmake_minimum_required(VERSION 3.12)
project(MyProject)
include(GNUInstallDirs)
# 设置安装目标的位置
install(TARGETS my_executable
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
# 安装头文件
install(FILES my_header.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
在这个例子中,include(GNUInstallDirs)
自动设置了 CMAKE_INSTALL_BINDIR
、CMAKE_INSTALL_LIBDIR
、CMAKE_INSTALL_INCLUDEDIR
等变量,然后通过 install
命令指定了可执行文件、库文件和头文件的安装路径。这样做使得你的项目更容易在不同的系统上进行移植和安装。