我似乎在使用CMake-I
中的命令设置包含路径 ()时遇到问题。include_directories()
我的项目目录如下:
Root
| - CMakeLists.txt
| - libs
| - | - CMakeLists.txt
| - | - inc
| - | - | - // lib specific includes
| - | - src
| - | - | - // lib specific sources
| - proj1
| - | - CMakeLists.txt
| - | - inc
| - | - | - // proj1 specific includes
| - | - src
| - | - | - // proj1 specific sources
根CMakeLists.txt
文件如下所示:
project(ROOT)
add_subdirectory(libs)
add_subdirectory(proj1)
下的CMakeLists.txt
文件libs
:
project(lib)
add_library(lib STATIC ${lib_hdrs} ${lib_srcs}) // for conciseness, omitted set()
最后,CMakeLists.txt
下的文件proj1
:
project(proj1)
include_directories("${ROOT_SOURCE_DIR}/lib/inc") # <- problem line?
add_executable(proj1 ${proj1_srcs})
target_link_libraries(proj1 lib)
目标是从 libs 中的源文件和头文件创建库,然后链接到 proj1 下生成的可执行文件。Proj1 有一些文件#include
包含在 libs 中,所以我需要添加要与-I
. 根据文档,这include_directories()
就是应该做的。然而,尽管明确设置并在其后加上 debug message(${INCLUDE_DIRECTORIES})
,但该INCLUDE_DIRECTORIES
变量是一个空字符串,并且没有为包含路径指定目录,因此我的 proj1 编译失败。
我还尝试删除周围的引号${ROOT_SOURCE_DIR}/inc
,看看是否有帮助,但没有运气。