在将自己定位到一个开源 C++ 项目时,我在根 CMakeLists.txt 文件中发现了一行代码:
include_directories(${PROJECT_SOURCE_DIR}/../include)
然后在其中一个源文件中有这一行:
#include "someFolder/someFile.h"
someFolder
位于 include
文件夹中。
我在另一个项目中看到了不同的方法, 其中 CMakeLists.txt 有如下内容:
include_directories(${PROJECT_SOURCE_DIR}/../include/someFolder)
然后在源文件中:
#include "someFile.h"
第一种方法通常通过 header 所属项目的名称来“命名空间”包含路径。将多个项目集成在一起时是否有共同的好处?如果是的话,这些共同的好处是什么?
最佳答案
我更喜欢包含文件的子目录。
这样做的主要原因是为了避免文件名冲突。如果依赖项 A
有一个名为 someFile.h
的文件,并且依赖项 B
也有一个名为 someFile.h
的文件,你遇到了问题,因为编译器不知道要包含哪一个。
因此,出于同样的原因,您应该使用命名空间,您还应该尽可能使用包含文件的子目录。
关于c++ - 将项目集成在一起时, "namespaced"在 CMake 和 C++ 项目中包含路径是否有好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37388080/