CMake:定义自定义包含路径

4

我需要在CMake项目中包含ZIMPL。在源代码中,ZIMPL头文件的包含方式如下:

#include zimpl/bool.h

在 ZIMPL 中,实际路径为 zimpl/src/bool.h。我该如何告诉 CMake(或 C 链接器)在遇到 zimpl/ 包含时查找 zimpl/src/
为了保持平台独立性,我更喜欢避免创建符号链接。

“重复”的问题询问如何编写CMake脚本,如果文件层次结构已经有了所需的相对路径。给定的问题明确说明#include中的相对路径与文件层次结构中的路径不同。投票重新打开。 - Tsyvarev
2个回答

1
你不能使用与实际路径不同的相对路径来包含文件。
处理你的情况最简单的方法是将原始头文件复制到需要路径后缀的位置。可以通过CMake中的file(COPY)configure_file(.. COPY_ONLY)实现:
file(COPY <source_include_dir>/zimpl/src/bool.h
    DESTINATION ${CMAKE_BINARY_DIR}/include/zimple/
)
include_directories(${CMAKE_BINARY_DIR}/include)

0

是的,我知道。但由于C源代码中的include命令要求特定路径zimpl/bool.h,因此它找不到 - 尽管CMake已经包含了相应的src/目录。 - mattmilten
哦,你是指将zimpl / bool.h重新映射到zimpl / src / bool.h吗?你不能这样做,因为包含路径只是编译器搜索的根目录。所以如果根是,比方说, zimpl/src/,你必须将其包含为<bool.h>。我建议创建一个单独的include/zimpl目录。 - Tim Čas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接