C / C ++来自不同项目的重复头文件名

时间:2017-11-06 21:18:38

标签: c++ header-files

我有一个使用不同组织开发的库的项目。称它们为lib_a和lib_b。对于这些库中的每一个,我需要包含它们各自的头文件:lib_a.h,lib_b.h

事实证明,这些库中的每一个都有一个头文件,它的名称相同(但内容不一样),这些头文件包含在各自的头文件中 - 称之为foo.h

所以在编译时,我有类似的东西:

g ++ -I / path / to / lib_a / headers -I / path / to / lib_b / headers ... myfile.cc -o myfile.o

myfile.cc包含lib_a.h和lib_b.h

问题在于,由于首先列出了lib_a头的路径,因此加载了lib_a中的foo.h。哪个不适合lib_b

我知道我可以更改lib_a.h和lib_b.h中的include语句,以指定它们各自foo.h的唯一路径。但是每次获得lib_a或lib_b的新副本时我都必须进行编辑。任何想要构建我的项目的人都必须修改他们的lib_a和lib_b安装。似乎应该有更好的方法,但我的谷歌不知道如何提问。

1 个答案:

答案 0 :(得分:0)

而不是:

g++ -I/path/to/lib_a/headers -I/path/to/lib_b/headers .

你应该只添加一条路径

g++ -I/path/to .

在您的来源中使用每个标题的显式名称:

#include "lib_a/headers/foo.h"
#include "lib_b/headers/foo.h"