正确的处理方式包括CMake和C ++项目中的路径

时间:2016-05-23 10:05:39

标签: 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"

我发现第二种方法比第一种方法更清洁。哪两个是正确的方法还是最佳实践?

2 个答案:

答案 0 :(得分:3)

我更喜欢包含文件的子目录。

这样做的主要原因是避免文件名冲突。如果依赖项A有一个名为someFile.h的文件,而依赖项B也有一个名为someFile.h的文件,则会出现问题,因为编译器不知道哪个一个要包括。

因此,出于同样的原因,你应该使用命名空间,你应该尽可能使用包含文件的子目录。

答案 1 :(得分:0)

嗯,在我看来,这是非常基于意见的......

我更喜欢前一种方法,特别是对于较大的库。它展示了作者所希望的库的逻辑结构。

相关问题