CMAKE库/应用程序结构

时间:2016-01-14 14:32:26

标签: c++ cmake

我有以下项目结构:

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)。

1 个答案:

答案 0 :(得分:0)

答案是使用

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)

请参阅CMake how to correctly create dependencies between targets