我想建立一个具有以下结构的静态库:
Foo/
|-- CMakeLists.txt
|-- file1.c
|-- some_definitions.h
|-- drivers/
|-- file2.c
这是cmake代码
add_library(myHAL STATIC)
target_sources(myHAL
PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/file1.c"
"${CMAKE_CURRENT_LIST_DIR}/drivers/file2.c"
)
target_include_directories(myHAL PUBLIC ${CMAKE_CURRENT_LIST_DIR}/)
target_include_directories(myHAL PUBLIC ${CMAKE_CURRENT_LIST_DIR}/drivers/)
file2包含some_definitions.h。在some_definitions中,存在一些#define。
我无法构建,找不到定义(例如,未清除FLS_FEATURE_A(首次使用))
当我在驱动程序文件夹中移动some_definitions.h时,就可以构建了。
我做错了什么?我想预处理器不查找定义或找不到some_definitions.h。
最佳答案
您需要使用target_include_directory或include_directory(在较旧的cmake版本上)
这将告诉您的cmake将目录添加到包含路径(就像-I在常规make中一样)
实际上在上一个线程中进行了讨论:How to properly add include directories with CMake
只是include_directories(“ $ {CMAKE_CURRENT_LIST_DIR}”)