我支持这两种风格......用于不同的用途
假设您还有一个root/src/common
用于我的示例的目录
// in src/module1/foo.cpp
#include "module1/foo.h"
#include "../common/stringProcessing.h"
包括
我不希望看到“包含”目录,因为当然要找到确切的头文件会更加困难......但是当您开始并转向多个独立库时,您需要抽象,因为您希望能够在不改变代码的情况下移动各种组件,我完全支持一致性。
此外,使用“..”总是存在风险,因为符号链接向后遍历,它不会去你想的地方:/
来源
有时您有不公开的标题,因此不在include
目录中。这些通常用于与您的客户无关的实施细节。对于那些我使用..
if need be 和精确位置的人。
这允许: - 不会将-I
所有可能的目录弄乱src
- 在源中轻松定位文件 - 轻松测试源之间的依赖关系(grep for ..
)
杂项
如果我必须输入
#include "module/foo.h"
然后我希望使用:
module::Foo myClass;
这使得将一种特定类型与一个特定模块匹配变得容易。
要求一个库 - 一个名称空间,具有相同的名称,这使得导航我们工作中的大约 300 或 400 个组件变得容易:我们必须想出一些方法来组织它们!
这意味着尽管您的初始布局被重新设计为(对于module
项目):
root
-- include
---- module
------ part1
------ part2
-- src
---- part1
---- part2
然后您使用以下指令:-I/path../root/include
我希望您创建一个libmodule.so
库或module
二进制文件。