我正在安装使用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
的操作。)
答案 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 。