【问题标题】:How do you control the location of header files in CMake?如何控制 CMake 中头文件的位置?
【发布时间】:2016-12-07 18:34:07
【问题描述】:

我正在安装一个使用 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 的处理。)

【问题讨论】:

    标签: cmake


    【解决方案1】:

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

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

    CMAKE_INSTALL_<dir>
    

    &lt;dir&gt; 可能在哪里(根据文档):

    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

    【讨论】:

      猜你喜欢
      • 2018-06-18
      • 1970-01-01
      • 2022-11-22
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多