【发布时间】:2017-11-07 06:12:21
【问题描述】:
我有一个项目使用不同组织开发的库。称它们为 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 中的包含语句,以指定它们各自 foo.h 的唯一路径但是每次我获得 lib_a 或 lib_b 的新副本时都必须进行该编辑.任何其他想要构建我的项目的人都必须修改他们的 lib_a 和 lib_b 安装。好像应该有更好的办法,但是我的google-fu不知道怎么问。
【问题讨论】:
-
是否可以将 myfile.cc 拆分为使用 lib_a.h 的部分和使用 lib_b.h 的部分?
-
并非如此 - 为了清楚起见,这被简化了。实际上,它们会非常交织在一起。
-
尽管如此,我认为您唯一可靠的方法是拆分它们并使用包装类和代理函数使它们独立。
标签: c++ header-files