我被分配使用 CMake 完全运行一个项目。
基本上,该项目有 20 多个模块,我为每个模块创建了一个 CMake 文件,例如:
# Module: CFS
file(
GLOB_RECURSE
files
*.c
*.cpp
)
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/cfs")
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/kernel2")
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
add_library(cfs ${files})
kernel2 是另一个模块,有自己的 CMakeFile。
现在的问题是第三个模块:m3 需要来自 cfs 的标头(也需要来自 kernel2 的标头)
所以我基本上选择:
# Module: m3
file( ... )
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/cfs")
add_library(m3 ${files})
target_link_library(m3 cfs)
不幸的是,这还不够,除非我添加,否则在编译时将找不到 kernel2 包含的文件:
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/kernel2")
我做错了吗?也许我还应该使用 add_library 指令添加包含文件?