首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake:无法在另一个目录中找到我的头文件

CMake:无法在另一个目录中找到我的头文件
EN

Stack Overflow用户
提问于 2020-06-26 18:36:00
回答 4查看 2.7K关注 0票数 0

我有一个包含以下相关文件夹的CMake项目:

代码语言:javascript
复制
project_folder
-src
|--main.c
peripherals
|--something.h
|--something.c

My CMake in project_folder包括:

代码语言:javascript
复制
add_subdirectory(peripherals)

if (NOT $ENV{TARGET_SOURCES} STREQUAL "")
    target_sources(app PRIVATE $ENV{TARGET_SOURCES})
else()
    target_sources(app PRIVATE src/main.c)
endif()

我的CMake在peripherals下蔓延开来:

代码语言:javascript
复制
add_library (peripherals something.c)

target_include_directories (peripherals PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

CMake在src

代码语言:javascript
复制
add_executable(app main.c)
target_link_libraries(app PRIVATE peripherals)

我的项目正在全面构建,但当我试图将头文件包含在main.c中时,我得到:

代码语言:javascript
复制
project_folder/peripherals/something.h:No such file or directory

在我的main.c文件中,我有#include "peripherals/something.h"。有人知道怎么解决这个问题吗?我不确定我的#include语句是否正确,我认为我丢失了我的CMakeLists文件中的东西

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-06-26 20:11:39

您可以在您的"#include "../peripherals/i2c_test.h" main.cpp中执行

在CMake in project_folder

代码语言:javascript
复制
 target_include_directories(app ${CMAKE_CURRENT_SOURCE_DIR})

然后在main.c:

代码语言:javascript
复制
#include <peripherals/i2c_test.h>
....
票数 2
EN

Stack Overflow用户

发布于 2020-06-26 18:47:24

您需要定义可执行文件并将其与库“链接”:

代码语言:javascript
复制
# project_folder/CMakeLists.txt
add_subdirectory(peripherals)
add_subdirectory(src)


# project_folder/src/CMakeLists.txt
add_executable(my_executable main.c)
target_link_libraries(my_executable PRIVATE peripherals)

然后,您需要在main.c中正确地包含标题--因为您已经链接到包含peripherals目录的库,所以现在可以直接包括它:

代码语言:javascript
复制
#include "something.h"
票数 1
EN

Stack Overflow用户

发布于 2020-06-26 19:14:39

您的include语句必须相对于包含的目录。

编辑:示例中的是项目目录( CMake文件所在的地方)。

因此,你应该能够写:

代码语言:javascript
复制
#include <peripherals/something.h>

您始终可以通过打印cmake变量来检查它的内容。在CMake文件中,您可以编写:

代码语言:javascript
复制
message(STATUS ${CMAKE_CURRENT_SOURCE_DIR})

运行cmake时,您应该看到控制台输出中打印的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62600941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档