这是一个用于学习和演示 Eigen (C++ 线性代数库) 的小型项目。仓库把多个示例源文件放在 src/,构建产物放在 output/。
目录结构
src/: 示例与练习的.cpp源文件。include/: (可选)头文件目录。lib/: (可选)第三方/本地库目录。output/: 构建后生成的可执行文件都会放在这里。Makefile: 项目构建脚本(已配置为生成output/<basename>可执行)。
先决条件
- 已安装 C++ 编译器(
g++或clang++),支持 C++17。 - 已安装 Eigen 头文件(Debian/Ubuntu:
sudo apt install libeigen3-dev)。 - 可选:
bear(用于生成compile_commands.json,便于 clangd)。
快速检查 Eigen 是否可用:
pkg-config --cflags eigen3
# 或检查头文件路径
ls /usr/include/eigen3/Eigen/Dense在项目根运行:
make # 构建 output/ 下的可执行构建会为 src/ 下的源文件生成 output/<basename> 可执行(默认行为)。
例如:
./output/main
./output/comma-initializer注意:目前的 Makefile 配置会尝试为 src/*.cpp 下的每个文件生成独立可执行。如果某个源文件不包含 main(),链接器会报 undefined reference to main。常见做法:
- 把库/模块代码放进
src/lib/或src/modules/,只把示例(含main)放src/examples/或src/根目录; - 或把不会单独运行的文件改写为只被编译为对象并由带
main的示例链接(可按需修改Makefile)。
- 已包含
.vscode/launch.json:调试时会尝试运行${workspaceFolder}/output/${fileBasenameNoExtension},并在启动前触发preLaunchTask: build。 - 已包含
.vscode/c_cpp_properties.json:为 Microsoft C/C++ 扩展提供includePath(包含/usr/include/eigen3)。 - 已包含
.clangd:为 clangd 提供额外的 include 标志。
生成 compile_commands.json(可选但推荐,能让 clangd/IDE 获得精确编译参数)
sudo apt install bear # 如果尚未安装
bear -- make
# 会在工作区生成 compile_commands.json- 在
src/下添加新的example_name.cpp并在其中包含int main()。 - 运行
make,可执行将生成为output/example_name。 - 可以直接f5调试运行。