我有以下项目结构:
root/
CMakeLists.txt
src/
CMakeLists.txt
engine/
CMakeLists.txt
*.h
*.cpp
console/
CMakeLists.txt
*.h
*.cpp
现在在src/engine/CMakeLists.txt
我打电话给add_library(engine ${SOURCES})
,它很好,编译和一切。现在在控制台中,我希望我的引擎包括#include "engine/foo.h"
而不只是#include "foo.h"
。
现在问题是,是否有任何优雅的方式来添加包含所以我必须在引导程序项目中将引擎添加到我的包含?
目前,我所做的是src/console/CMakeLists.txt
中的以下内容:
add_executable(console ${SOURCES})
target_include_directories(console PUBLIC ${lib_incl_path})
target_link_libraries(console PRIVATE engine)
然后在set(lib_incl_path ${CMAKE_CURRENT_SOURCE_DIR})
中定义src/CMakeLists.txt
。但是,将整个src文件夹添加到包含内容似乎有点过分(和hacky)。
答案 0 :(得分:0)
答案是使用
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
请参阅CMake how to correctly create dependencies between targets