0

假设我在图书馆工作,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 进行分层的最佳方式是什么?我唯一的想法是添加一个所有构建目标所依赖的目标,该目标在我的源树中创建一个带有符号链接的隐藏文件夹,并将该隐藏文件夹添加到包含路径中。也许有一种不太容易混淆的方式?

4

1 回答 1

0

你不能为你的 Makefile 使用 INC 选项的 -I gcc 键吗?

海湾合作委员会:

gcc -c -I/home/joseph/dev/foo/headers

生成文件:

INC=-I/home/joseph/dev/foo/headers

在这种情况下,您将只有一个地方可以进行此更改,即 Makefile。

于 2012-11-15T07:41:25.447 回答