在 Ubuntu 下设置 C++ 头文件路径,常见有几种方式,取决于你是手动编译、用 CMake、还是系统级配置。下面按使用场景给你总结一下。
g++ / clang++ 手动编译-I 指定头文件路径(最常用 ✅)g++ main.cpp -I /path/to/include
示例:
g++ main.cpp -I /home/user/mylib/include
这会让编译器在:
/home/user/mylib/include
中查找头文件。
g++ main.cpp -I/path/to/include1 -I/path/to/include2
g++ -v -E -x c++ -
或
echo | g++ -v -E -x c++ -
输出中会包含类似:
#include <...> search starts here:
/usr/include/c++/11
/usr/include/x86_64-linux-gnu
/usr/include
include_directoriesinclude_directories(/path/to/include)
⚠️ 不推荐用于现代 CMake(全局生效)
target_include_directories(推荐 ✅)add_executable(myapp main.cpp)
target_include_directories(myapp
PRIVATE
/path/to/include
)
如果是第三方库:
target_include_directories(myapp
PRIVATE
${PROJECT_SOURCE_DIR}/third_party/lib/include
)
/usr/include
/usr/local/include
只要头文件放在这些目录,直接:
#include <header.h>
sudo cp myheader.h /usr/local/include/
export CPLUS_INCLUDE_PATH=/path/to/include:$CPLUS_INCLUDE_PATH
永久生效可写入:
~/.bashrc
export CPLUS_INCLUDE_PATH=/path/to/include
然后编译:
g++ main.cpp
查看:
echo $CPLUS_INCLUDE_PATH
fatal error: myheader.h: No such file or directory
-I#include <> 还是 #include ""
<>:系统路径"":当前目录 + -I 路径| 场景 | 推荐方式 |
|---|---|
| 手动 g++ | -I /path/to/include |
| CMake | target_include_directories |
| 第三方库 | -I 或 CMake |
| 系统库 | 放 /usr/local/include |
如果你愿意,可以告诉我:
我可以给你一个完全对应你项目的示例。