c++ - 将项目集成在一起时, "namespaced"在 CMake 和 C++ 项目中包含路径是否有好处?

标签 c++ cmake

在将自己定位到一个开源 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/

相关文章:

c++ - 如何使用CMake链接 "numpy/arrayobject.h"

cmake - 使用 cmake 链接库

c++ - 为什么这个 C++ 模板代码不能编译?

python - Docker opencv3 Cmake错误

c++ - CMake 找不到 boost

c++ - 将 cmake 编译器从 clang 更改为 g++ for mac

android - java.lang.UnsatisfiedLinkError : dlopen failed: library "libopencv_java3.so" not found 错误

c++ - 如何在函数内部操作 char 数组(字符串)的指针,它在 c/c++ 中作为参数传递

c++ - 不与任何其他窗口应用程序共享客户区

c++ - pthreads 只创建一个线程