cmake文件:
cmake_minimum_required(VERSION 3.23)
project(0)
set(CMAKE_CXX_STANDARD 14)
set(EIGEN3_INCLUDE_DIR F:/smalltools/mybin/eigen-3.4.0)
include_directories(${EIGEN3_INCLUDE_DIR})
add_executable(0 main.cpp)
main文件:
#include <iostream>
#include <cmath>
#include <Eigen/Core>
using std::cout;
using std::endl;
using std::cos;
using std::sin;
using Eigen::Vector3d;
using Eigen::Matrix3d;
double toArc(double x);
int main()
{
Vector3d P{2, 1, 1};
Matrix3d R45{
{cos(toArc(45)), -sin(toArc(45)), 0},
{sin(toArc(45)), cos(toArc(45)), 0},
{0, 0, 1}
};
Matrix3d T{
{1, 0, 1},
{0, 1, 2},
{0, 0, 1}
};
cout << R45 << endl << endl;
cout << T * R45 * P;
}
double toArc(double x)
{
return x * 3.1415926545 / 180;
}
在上例中,main使用了Eigen库,并且在cmakelist中使用include_directories制定了eigen库的头文件地址
但是问题是我没有指定链接选项,则编译的时候编译器是怎么找到eigen库真正的实现的位置呢?
你使用的
Eigen
不是一个外部库的形式,没有.so
文件,它的实现只有头文件。因此不需要指定链接选项,只需要
#include
。