我使用具有不同库的代码,这些库使用defines.h
之类的名称。这不仅会导致相同文件名的冲突,还会造成混淆。 defines.h
包含哪个库?
包括#include <library/defines.h>
将是一个干净的解决方案,但是包含路径需要是库的父目录,这是相当不洁净的。
有没有办法为包含路径设置别名,以便-I/path/to/library
在library/headername.h
下提供标题?
答案 0 :(得分:1)
是否有某种方法可以为包含路径设置别名,以便
-I/path/to/library
在library/headername.h
下提供标题?
在这种情况下似乎没有必要。您只需使用-I/path/to
即/path/to/library/headername.h
下的library/headername.h
。
尽管如此,虽然没有这样的编译选项(我知道),但您可以在大多数文件系统中为文件路径创建这样的“别名”。这些别名称为符号链接。在这种情况下,您可以建立一个指向/path/to/library/mylibrary
的{{1}}链接,假设您使用.
,/path/to/library/headername.h
会mylibrary/headername.h
下-I/path/to/library
。
答案 1 :(得分:0)
至少在unixy系统上,当您编译并安装库时,标题会安装到例如
/usr/lib/libraryname/*.h
或者类似
/opt/libraryname-1.2/include/libraryname/*.h
然后如果有必要(不安装到编译器的默认包括搜索路径),右侧dir添加了编译器选项,对于 gcc 例如选项
-I/opt/libraryname-1.2/include
然后总是在源代码中执行此操作,信任构建系统以包含正确的搜索路径:
#include <libraryname/includefile.h>