我正在尝试使用 cmake,但我对 cmake 和 c++ 都是新手。我想要一段代码在不同的其他程序中使用。文件夹结构是这样的:
/modules/foo
/modules/foo/src
/modules/foo/include/foo
/cmake
/apps/bar
/apps/bar/src
/apps/bar/include
我的问题是,在 bar main 我可以包含(以及编译和运行)两者
#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)
从 /modules/foo/CMakeLists.txt 中删除,我会收到一个编译错误,提示在 /modules/foo/src/foo.cpp 中找不到“foo.h”文件
如果我include_directories(${CMAKE_CURRENT_LIST_DIR}/../modules/foo/include)
从 FindFoo.cmake 中删除,我会在'foo/foo.h' file not found /apps/bar/src/main.cpp中得到错误
我能做些什么?解决此类问题的常见做法是什么?我是否必须忽略这样一个事实,即在 apps/bar/src/main.cpp 中我可以同时包含foo.h
和foo/foo.h
?我必须include_directories
只写一次并#include "foo/foo.h
在 foo.cpp 中使用吗?