我正在尝试使用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如果我从/ include_directories(include/foo) /foo/cmakeLists.txt中删除/foo/cmakeLists.txt,就会得到一个编译错误,即'foo.h‘文件在//foo/src/foo.cpp中找不到。
如果从include_directories(${CMAKE_CURRENT_LIST_DIR}/../modules/foo/include)中删除FindFoo.cmake,则在'foo/foo.h‘文件中找不到/app/bar/src/main.cpp中的错误。
我能做什么?解决这类问题的普遍做法是什么?我是否必须忽略这样一个事实:在app/bar/src/main.cpp中,我可以同时包含foo.h和foo/foo.h?我必须只写一次include_directories并在foo.cpp中使用#include "foo/foo.h吗?
发布于 2013-10-10 13:36:59
#include "foo.h",可能首先包括add_library命令。include_directories(${CMAKE_SOURCE_DIR})的序言中添加CMakeLists.txt#include "foo/foo.h"来包含foo.h。无论您做什么,都不要忘记使用foo命令链接到target_link_libraries库。珍贵链接:Commands
https://stackoverflow.com/questions/19277027
复制相似问题