在 CMakeLists.txt 文件中配置 Eigen

config Eigen in CMakeLists.txt file

当我在 CMakeLists.txt 文件中配置 Eigen 库时,如下所示:

cmake_minimum_required(VERSION 3.14)
project(helloworld)

add_subdirectory(tests)
add_subdirectory(deps/eigen) 

set(SRC_LIST main.cpp)
add_executable(hello ${SRC_LIST})
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
target_link_libraries(hello eigen)

我收到 cmake 错误

CMake Error at build/deps/eigen/Eigen3Config.cmake:20 (include):
  The file

    /Users/joe/codecplus/build/deps/eigen/Eigen3Targets.cmake

  was generated by the export() command.  It may not be used as the argument
  to the include() command.  Use ALIAS targets instead to refer to targets by
  alternative names.

Call Stack (most recent call first):
  CMakeLists.txt:9 (find_package)

有人能帮帮我吗?不知道这里出了什么问题。非常感谢。

您使用两种方式同时包含 3d 方项目 (Eigen):

  1. add_subdirectory()

  2. find_package()

这是错误的。诉诸单一方式:

  1. add_subdirectory:

    add_subdirectory(deps/eigen) 
    # ...
    target_link_libraries(hello Eigen3::eigen)
    
  2. find_package():

    find_package(Eigen3 3.3 REQUIRED NO_MODULE)
    target_link_libraries(hello Eigen3::eigen)
    

请注意,对于 link,这两种方法都使用 Eigen3::eigen 目标而不是 eigen。只有这个名称适用于第二种方法,它在 Eigen 用法的文档中进行了描述。