如何为configure指定默认路径后搜索的头文件查找路径
方案1:使用-idirafter编译参数(推荐)
这是最匹配需求的原生实现方案,GCC、Clang编译器均支持该参数:
执行configure时,将自定义路径通过CPPFLAGS传入-idirafter参数即可,示例如下:
CPPFLAGS="-idirafter /你的/自定义/头文件/路径" ./configure
-idirafter指定的路径会被追加到所有系统默认头文件搜索路径的末尾,只有默认路径完全找不到目标头文件时,才会到该路径下检索,完全不会出现自定义路径同名头文件覆盖系统默认头文件的问题。
注意:不要用
-isystem参数实现该需求,-isystem指定的路径优先级高于系统默认头文件路径,仍然会出现同名头文件覆盖的问题。
方案2:手动指定全量搜索顺序(特殊场景使用)
如果你需要完全自定义所有路径的搜索优先级,也可以手动梳理优先级后配置:
- 先执行以下命令获取当前编译器的默认头文件搜索路径:
`gcc -print-prog-name=cc1` -v 2>&1 | grep -A10 '^#include <...> search starts here:' | grep -v '^End of search list.$' - 按照「默认路径在前、自定义路径在后」的顺序,把所有路径依次用
-I参数传给configure即可,该方式冗余度较高,仅特殊场景下使用。
内容的提问来源于stack exchange,提问作者Long Horn
相关产品推荐
相关产品推荐

