如何在CMake中控制头文件的位置?

时间:2016-12-07 18:34:07

标签: cmake

我正在安装使用CMake构建的软件包。它将头文件安装在非标准位置。我是否可以在安装时使用变量来更改该路径?

当前的CMake调用是:

cmake /p/a/t/h -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib

我正在寻找-DCMAKE_INSTALL_INCDIR-DCMAKE_INCLUDE_DIR-DCMAKE_INCLUDE_HEADERDIR等等。 (例如,我尝试使用autoconf生成的配置脚本完成configure --includedir=/usr/include的操作。)

1 个答案:

答案 0 :(得分:3)

通常,CMake软件包不需要允许用户在每个组件的基础上修改安装路径

但是如果软件包包含CMake模块GNUInstallDirs并使用其中的变量来安装组件,则用户可能会通过设置其中一些变量来影响组件的安装路径。每个这样的变量都有一个形式

CMAKE_INSTALL_<dir>

<dir>可能在哪里(根据文档):

BINDIR           - user executables (bin)
SBINDIR          - system admin executables (sbin)
LIBEXECDIR       - program executables (libexec)
SYSCONFDIR       - read-only single-machine data (etc)
SHAREDSTATEDIR   - modifiable architecture-independent data (com)
LOCALSTATEDIR    - modifiable single-machine data (var)
LIBDIR           - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
INCLUDEDIR       - C header files (include)
OLDINCLUDEDIR    - C header files for non-gcc (/usr/include)
DATAROOTDIR      - read-only architecture-independent data root (share)
DATADIR          - read-only architecture-independent data (DATAROOTDIR)
INFODIR          - info documentation (DATAROOTDIR/info)
LOCALEDIR        - locale-dependent data (DATAROOTDIR/locale)
MANDIR           - man documentation (DATAROOTDIR/man)
DOCDIR           - documentation root (DATAROOTDIR/doc/PROJECT_NAME)

注意,包不需要使用所有这些变量。例如,软件包可以使用变量 CMAKE_INSTALL_LIBDIR 作为安装库,但在安装头时忽略 CMAKE_INSTALL_INCLUDEDIR