我正在尝试使用cmake,但我对cmake和C++都是新手。我想要在其他不同的程序中使用一段代码。该文件夹结构是这样的:cmake,关于include_directories的说明
/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)
我得到一个编译错误,即在/模块“foo.h中”找不到文件 /foo/src/foo.cpp
而如果我从FindFoo.cmake删除include_directories(${CMAKE_CURRENT_LIST_DIR}/../modules/foo/include)
我得到“富/ foo.h中”错误文件找不到 /apps/bar/src/main.cpp
我该怎么办?解决这类问题的常见做法是什么?我是否必须忽略apps/bar/src/main.cpp中包含foo.h
和foo/foo.h
的事实?我是否必须在foo.cpp中只写include_directories
一次并使用#include "foo/foo.h
?
IMO使用src和include目录时,将src应包含完全相同的源(的.cpp)文件和包括应包含头文件(.h),其中头通常有子目录结构。为什么你在源文件夹中有foo.h(/modules/foo/src/foo.h)?分离头文件和源文件的优点是能够只运送头文件(即包括目录)以供其他项目使用。 – Ralf
对不起,错误。我还没有习惯去思考这些结构,我很关心那些不同的包括,源,cmakelists等。 – nkint
这实际上是关于你的个人喜好,你如何构建你的项目。如果您愿意,您的源代码和头文件可以位于同一个目录中,具有分离的主要优点。 – Ralf