Jai*_*iro 4 c++ cmake header-files
这可能是一个虚拟的问题,但我从字面上看google的前两个页面都没有成功。
我正在编写仅标头的库,并且无法正确设置CMake配置,以便在构建解决方案时给定的main.cpp查找正确的包含。
如何做到这一点?
编辑
因此,我可能应该给出更详细的解释。
可以说我有一个./src文件夹:./src/core和./src/wrappers。在每个文件夹中,我都有一些.h文件需要包含在main.cpp文件中:
#include <src/core/reader.h>
Run Code Online (Sandbox Code Playgroud)
仍然当我输入CMakeList.txt类似的内容时:
include_directories(src/core)
add_executable(main main.cpp)
Run Code Online (Sandbox Code Playgroud)
我收到类似src/core/reader.h这样的消息:没有这样的文件或目录。
为了能够使用该路径,您应该参考的父目录src。
假设顶层CMakeLists.txt位于的同一级别src,则可以改用:
include_directories(${CMAKE_SOURCE_DIR})
Run Code Online (Sandbox Code Playgroud)
从以下文档中CMAKE_SOURCE_DIR:
到源树顶层的路径。
如果src直接位于顶层目录中,则应使用类似以下的内容:
#include <src/whatever/you/want.h>
Run Code Online (Sandbox Code Playgroud)
也就是说,有两个建议:
我宁愿添加以下内容:
include_directories(${CMAKE_SOURCE_DIR}/src)
Run Code Online (Sandbox Code Playgroud)
并使用此:
#include <whatever/you/want.h>
Run Code Online (Sandbox Code Playgroud)
不再src在您的路径和受限的搜索区域中。
我可能会使用target_include_directories而不是include_directories并指定要用于该规则的目标:
target_include_directories(main ${CMAKE_SOURCE_DIR}/src)
Run Code Online (Sandbox Code Playgroud)
必须将其放在之后add_executable,否则目标不可见。
只需添加一个include_directories()指令即可找到目标项目可以在哪里找到您的仅标头库。
根据您的编辑。寻找
#include <src/core/reader.h>
Run Code Online (Sandbox Code Playgroud)
你需要添加
include_directories(/full_parent_path_of_src)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1536 次 |
| 最近记录: |