我有一个包含以下相关文件夹的CMake项目:
project_folder
-src
|--main.c
peripherals
|--something.h
|--something.cMy CMake in project_folder包括:
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下蔓延开来:
add_library (peripherals something.c)
target_include_directories (peripherals PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})CMake在src下
add_executable(app main.c)
target_link_libraries(app PRIVATE peripherals)我的项目正在全面构建,但当我试图将头文件包含在main.c中时,我得到:
project_folder/peripherals/something.h:No such file or directory在我的main.c文件中,我有#include "peripherals/something.h"。有人知道怎么解决这个问题吗?我不确定我的#include语句是否正确,我认为我丢失了我的CMakeLists文件中的东西
发布于 2020-06-26 20:11:39
您可以在您的"#include "../peripherals/i2c_test.h" main.cpp中执行
或
在CMake in project_folder中
target_include_directories(app ${CMAKE_CURRENT_SOURCE_DIR})然后在main.c:
#include <peripherals/i2c_test.h>
....发布于 2020-06-26 18:47:24
您需要定义可执行文件并将其与库“链接”:
# 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目录的库,所以现在可以直接包括它:
#include "something.h"发布于 2020-06-26 19:14:39
您的include语句必须相对于包含的目录。
编辑:示例中的是项目目录( CMake文件所在的地方)。
因此,你应该能够写:
#include <peripherals/something.h>您始终可以通过打印cmake变量来检查它的内容。在CMake文件中,您可以编写:
message(STATUS ${CMAKE_CURRENT_SOURCE_DIR})运行cmake时,您应该看到控制台输出中打印的路径。
https://stackoverflow.com/questions/62600941
复制相似问题