来自静态库的cmake头文件包含

时间:2018-10-15 15:50:12

标签: c cmake include-path

我想建立一个具有以下结构的静态库:

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。

1 个答案:

答案 0 :(得分:0)

您需要使用target_include_directory或include_directory(在较旧的cmake版本上) 这将告诉您的cmake将目录添加到包含路径(就像在常规make中的-I一样) 这实际上在上一个线程中进行了讨论:How to properly add include directories with CMake

just include_directories(“ $ {CMAKE_CURRENT_LIST_DIR}”)