CMake 更改强制 DESTINATION 目录名称(安装目标)
Posted
技术标签:
【中文标题】CMake 更改强制 DESTINATION 目录名称(安装目标)【英文标题】:CMake change forced DESTINATION directory name (install target) 【发布时间】: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>
^^^
我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:为避免在安装路径中添加目录名称,请使用 斜杠 (/
) 终止目录:
install(
DIRECTORY src/
...
)
install 命令的文档中明确说明了这一点:
每个目录名称的最后一个组件都附加到目标目录,但可以使用尾部斜杠来避免这种情况,因为它会将最后一个组件留空。
【讨论】:
以上是关于CMake 更改强制 DESTINATION 目录名称(安装目标)的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 CMake 使用系统上安装的特殊版本的 Protobuf?