繁体   English   中英

CMakeLists.txt 中的特征库设置

[英]Eigen library setup in CMakeLists.txt

我有一个这样的项目文件结构:

.
├── CMakeLists.txt
├── deps
│   ├── cxxtest
│   └── eigen
├── main.cpp
└── tests
    ├── CMakeLists.txt
    └── hello_world.cpp

两个 CMakeLists.txt 文件和两个 .cpp 文件是

在此处输入图片说明

所以我的问题是为什么我必须将 Eigen 库设置放在 CMakeLists.txt 文件的顶层,如下以使顶层 .cpp 文件工作,即找到 Eigen/Dense 标头,但较低级别的 .cpp无论 CMakeLists.txt 文件的顶层和底层是否具有以下设置,都将始终有效?

find_package(Eigen3 3.3 REQUIRED NO_MODULE)
target_link_libraries(proj Eigen3::Eigen)

我猜您想在项目目录树中使用本地 Eigen 库,即deps/eigen 最简单的方法是使用add_subdirectory像往常一样添加 Eigen 子目录。 您可能还需要将目标库从Eigen3::Eigen更改为eigen 主要的CMakeLists.txt看起来像这样:

cmake_minimum_required(VERSION 3.14)
project(PROJECT)

add_subdirectory(deps/eigen)
add_subdirectory(tests)

set(SRC_LIST main.cpp)
add_executable(proj ${SRC_LIST})
target_link_libraries(proj eigen)

此外,为了使单元测试hello_world.cpp工作,您需要在tests目录中的CMakeLists.txt中添加到 Eigen 库的链接,即:

target_link_libraries(hello_world eigen)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM