假设我在图书馆工作,foo。在我的库源文件中,我想以与我的库用户相同的方式包含标题:
#include <foo/bar.hpp>
// code defining bar methods here
例如,在 boost 中,boost 中的其他标头的包含以这种方式完成,例如<boost/shared_ptr.hpp>
,而不是相对引用的"../shared_ptr.hpp"
样式。我查看了其他一些库是如何做到这一点的,似乎他们在文件布局中添加了一个冗余目录来实现这一点,例如,boost 代码位于“boost_1_4_1/boost”中,而不仅仅是“boost_1_4_1/”。
如果您已经使用现有布局进行源代码控制,则切换到该方案很烦人。使用 GNU make 进行分层的最佳方式是什么?我唯一的想法是添加一个所有构建目标所依赖的目标,该目标在我的源树中创建一个带有符号链接的隐藏文件夹,并将该隐藏文件夹添加到包含路径中。也许有一种不太容易混淆的方式?