【问题标题】:CMake change forced DESTINATION directory name (install target)CMake 更改强制 DESTINATION 目录名称(安装目标)
【发布时间】:2019-12-27 03:49:47
【问题描述】:

我正在尝试将install 目标添加到我的库中。我的源代码和头文件位于src/ 下的子目录中。

我的CMakeLists.txt 文件的相关块:

install(
    TARGETS "${PROJECT_NAME}"
    EXPORT ionir-config LIBRARY
    DESTINATION ${CMAKE_INSTALL_LIBDIR} # Destination is relative to ${CMAKE_INSTALL_PREFIX}.
)

install(
    EXPORT ionir-config
    NAMESPACE ionir::
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ionir
)

install(
    DIRECTORY src
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
    FILES_MATCHING PATTERN "*.h" PATTERN "LICENSE" # Match only header files & LICENSE file.
)

问题是一旦安装,输出目录的名称是src:

我希望它是ionir,否则我必须像这样导入文件:

#include <ionir/src/something/file.h>
                ^^^

我怎样才能做到这一点?

【问题讨论】:

    标签: c++ windows cmake


    【解决方案1】:

    为避免在安装路径中添加目录名称,请使用 斜杠 (/) 终止目录:

    install(
        DIRECTORY src/
        ...
    )
    

    install 命令的文档中明确说明了这一点:

    每个目录名称的最后一个组件都附加到目标目录,但可以使用尾部斜杠来避免这种情况,因为它会将最后一个组件留空。

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 2016-03-30
      • 2017-01-14
      • 2012-08-02
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多