如何正确别名/usr/include下的头文件以通过<foo.h>形式引入?
实现方案
GCC和clang都支持通过-I编译参数指定自定义头文件搜索目录,且-I指定的目录搜索优先级天然高于系统默认的/usr/include路径,完全满足你的需求。
具体用法
假设你自己编写的foo.h存放在/path/to/your/custom/include目录下,直接在编译命令中加入对应-I参数即可:
- C语言编译示例:
gcc -I /path/to/your/custom/include your_source.c -o output_bin
- C++语言编译示例:
g++ -I /path/to/your/custom/include your_source.cpp -o output_bin
clang的命令用法和上述示例完全一致。
额外说明
- 该配置不会影响其他系统头文件的正常引入:编译器在
-I指定的目录下找不到对应头文件时,会自动 fallback 到/usr/include等系统路径搜索,只有和你自定义头文件重名的foo.h会优先使用你自己的版本。 - 如果使用Makefile构建,只需将
-I参数添加到CFLAGS(C语言)或CXXFLAGS(C++)变量中即可。 - 如果使用CMake构建,可在CMakeLists.txt中添加配置:
CMake会自动将配置转化为编译命令中的# 全局所有目标生效 include_directories(/path/to/your/custom/include) # 或者仅对指定目标生效 target_include_directories(你的目标名 PRIVATE /path/to/your/custom/include)-I参数。
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

