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 header,但是无论 CMakeLists.txt 文件的顶层和底层是否都具有以下设置,下层 .cpp 将始终有效?
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
target_link_libraries(proj Eigen3::Eigen)
我猜您想在项目目录树中使用本地 Eigen 库,即 deps/eigen
。最简单的方法是像往常一样添加 Eigen 子目录,使用 add_subdirectory
。您可能还需要将目标库从 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)
我有一个这样的项目文件结构:
.
├── CMakeLists.txt
├── deps
│ ├── cxxtest
│ └── eigen
├── main.cpp
└── tests
├── CMakeLists.txt
└── hello_world.cpp
并且两个 CMakeLists.txt 文件和两个 .cpp 文件是
所以我的问题是为什么我必须如下将 Eigen 库设置放在 CMakeLists.txt 文件的顶层以使顶层 .cpp 文件工作,即找到 Eigen/Dense header,但是无论 CMakeLists.txt 文件的顶层和底层是否都具有以下设置,下层 .cpp 将始终有效?
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
target_link_libraries(proj Eigen3::Eigen)
我猜您想在项目目录树中使用本地 Eigen 库,即 deps/eigen
。最简单的方法是像往常一样添加 Eigen 子目录,使用 add_subdirectory
。您可能还需要将目标库从 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)