gpt4 book ai didi

cmake 头文件包含来自静态库

转载 作者:行者123 更新时间:2023-11-30 16:27:11 26 4
gpt4 key购买 nike

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

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 未声明(首次使用))当我将 some_definitions.h 移动到驱动程序文件夹中时,我就可以构建。

我做错了什么?我想预处理器不会查找定义或找不到 some_definitions.h 。

最佳答案

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

只需 include_directories("${CMAKE_CURRENT_LIST_DIR}")

关于cmake 头文件包含来自静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52820434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com