cmake 如何找到外部库?

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库真正的实现的位置呢?

阅读 1.9k
1 个回答

你使用的 Eigen 不是一个外部库的形式,没有 .so 文件,它的实现只有头文件。

因此不需要指定链接选项,只需要 #include

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题