我有一个使用不同组织开发的库的项目。称它们为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安装。似乎应该有更好的方法,但我的谷歌不知道如何提问。
答案 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"