cmake Headerfile включает из статической библиотеки - PullRequest
0 голосов
/ 15 октября 2018

Я бы хотел создать статическую библиотеку со следующей структурой:

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 находятся некоторые #defines.

Я не могу собрать, определения не найдены (например, FLS_FEATURE_A undecleared (первое использование)) Когда я перемещаю файл some_definitions.h в папку драйверов, я могу собрать.

Что я делаю не так?Я предполагаю, что препроцессор не ищет определений, или some_definitions.h не найден.

1 Ответ

0 голосов
/ 15 октября 2018

вам нужно использовать target_include_directory или include_directory (в более старых версиях cmake), это скажет вашему cmake добавить каталог к ​​пути включения (так же, как -I в обычном make), это фактически обсуждалось в предыдущем потоке: Как правильно добавить каталоги включения с CMake

просто include_directories ("$ {CMAKE_CURRENT_LIST_DIR}")

...