gpt4 book ai didi

c++ - 如何使用 eigen 编译 C++ 程序而不指定 -I 标志?

转载 作者:行者123 更新时间:2023-12-02 13:26:55 26 4
gpt4 key购买 nike

我有以下使用特征的测试程序:

#include <iostream>
#include <Eigen/Dense>

using namespace std;
using Eigen::MatrixXd;

int main() {
MatrixXd m(2, 2);
m(0, 0) = 3;
m(1, 0) = 2.5;
m(0, 1) = -1;
m(1, 1) = m(1, 0) + m(0, 1);
cout << m << endl;
}

我可以使用 g++ -I/usr/include/eigen3/test1.cpp 编译它。

但是,如果我不指定包含标志,则编译命令将不起作用。这对我来说似乎很奇怪,因为我认为编译器会自动拾取 /usr/include 下的任何 header (例如 Boost header ,也位于 /usr/include ,工作得很好,无需告诉编译器在哪里寻找它们)。我需要对特征设置进行哪些更改,以便不必在编译命令中指定 -I 标志?

最佳答案

如果更换

#include <Eigen/Dense>

#include <eigen3/Eigen/Dense>

你的代码将会编译。换句话说,问题是您包含 <Eigen/Dense>位于目录 /usr/include/eigen3 中,但编译器仅在 /usr/include 中搜索默认情况下。

我建议使用包含标志,而不是包含 <eigen3/Eigen/Dense> ,因为这在发行版、操作系统等之间更具可移植性,并且通常更容易为其他环境配置编译。 Eigen3 附带 pkg-config 文件,非常易于使用和移植。编译

g++ $(pkg-config --cflags eigen3) test1.cpp

适用于所有可用 pkg-config 的平台,如果您想避免硬编码的包含路径,它是一个很好的选择。

关于c++ - 如何使用 eigen 编译 C++ 程序而不指定 -I 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21984971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com