cmake link 两个库 +

cmake link two libraries +

我正在尝试 link 两个库。一个取决于另一个。他们都在同一水平上。我尝试按照我的版本的文档进行操作,但是当我编译它时,包含 <> 的内容不起作用。

依赖关系

include_directories(headers)

add_library(log SHARED log.c)
target_compile_definitions(log PUBLIC log)

家属

include_directories(headers)

add_library(window OBJECT dialog.c ncurses_add.c window.c)
target_compile_definitions(window PUBLIC OBJ)
target_link_libraries(window log)

谁能帮我理解这是为什么?谢谢

target_include_directories(log INTERFACE headers)target_include_directories(log PUBLIC headers) 添加到 log CMakeLists.txt。

来自target_include_directories manual

PUBLIC and INTERFACE items will populate the INTERFACE_INCLUDE_DIRECTORIES property of <target>

来自INTERFACE_INCLUDE_DIRECTORIES manual

List of public include directories requirements for a library. Targets may populate this property to publish the include directories required to compile against the headers for the target

这意味着任何依赖目标都将获得添加到其构建命令中的依赖项的包含路径。