config Eigen в файле CMakeLists.txt - PullRequest
       29

config Eigen в файле CMakeLists.txt

1 голос
/ 09 марта 2020

Когда я настраиваю библиотеку Eigen в файле CMakeLists.txt следующим образом:

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)

Кто-нибудь может мне помочь? Не знаю, что здесь происходит. Большое спасибо.

1 Ответ

3 голосов
/ 09 марта 2020

Вы используете двумя способами для включения стороннего проекта (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)
    

Обратите внимание, что оба подхода используют Eigen3::eigen target вместо eigen для связи с. Только это имя работает со вторым подходом, и оно описано в документации по использованию Eigen.

...