我正在尝试使用cmake,但我对cmake和c ++都是新手。我想要在不同的其他程序中使用一段代码。文件夹结构如下:
/modules/foo
/modules/foo/src
/modules/foo/include/foo
/cmake
/apps/bar
/apps/bar/src
/apps/bar/include
我的问题是,在酒吧主要我可以包括(和编译并运行)两个
#include "foo.h"
#include "foo/foo.h"
我认为这是出现问题的症状。 我正在寻找的是像
#include "foo.h" // only inside the foo source code
#include "foo/foo.h" // outside
如果从/modules/foo/CMakeLists.txt中删除include_directories(include/foo)
,我会收到一个编译错误,指出/ modules / foo / src /中未找到'foo.h'文件 Foo.cpp中
如果我从FindFoo.cmake中删除include_directories(${CMAKE_CURRENT_LIST_DIR}/../modules/foo/include)
,我会在'foo / foo.h'文件中找不到错误 /apps/bar/src/main.cpp
我该怎么办?解决这类问题的常见做法是什么?我是否必须忽略在apps / bar / src / main.cpp中我可以同时包含foo.h
和foo/foo.h
的事实?我是否只需编写一次include_directories
并在foo.cpp中也使用#include "foo/foo.h
?
答案 0 :(得分:1)
#include "foo.h"
,可能首先包括add_library
命令。include_directories(${CMAKE_SOURCE_DIR})
#include "foo/foo.h"
来包含您的foo.h.无论您何时执行此操作,请不要忘记使用foo
命令与target_link_libraries
库链接。珍贵链接:http://www.cmake.org/cmake/help/v2.8.11/cmake.html#section_Commands