很遗憾,我在我的Ubuntu 18.04.4 LTS系统上使用Cmake将头文件Eigen 3.3.7 Library添加到Makefile时遇到了一些问题。 我可以通过将库文件夹复制到include目录中并在CMakeLists.txt文件中使用
我准备了以下最小代码示例:
main.cpp:
我只下载了头文件Eigen 3.3.7库,并将文件夹重命名为eigen3。然后将该文件夹移动到:
当我检查Eigen库文件夹时,我发现
我尝试将文件重命名为Eigen3Config.cmake,但出现了以下错误:
此外,我还尝试了在stackoverflow: CMake find_package not working for Eigen?中解释的解决方案,但没有成功。
我该如何使它正常工作?我认为我还不太理解底层系统。任何解释都将不胜感激。
include_directories(./include/eigen3)
来编译我的代码。 但是,我更希望不要硬编码库路径,而是能够在CMakeLists.txt文件中动态设置它,以使与他人共享项目变得更加容易。 不幸的是,我找到的所有说明都没有起作用。我准备了以下最小代码示例:
main.cpp:
#include <eigen3/Eigen/Dense>
#include <iostream>
int main()
{
Eigen::Vector3d test_vec(1.0f, 2.0f, 3.0f);
std::cout << test_vec << std::endl;
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(Eigen-Cmake-Test VERSION 1.0) # set the project name
find_package (Eigen3 3.3 REQUIRED NO_MODULE)
include_directories(${EIGEN_INCLUDE_DIR})
# add the executable
add_executable("${PROJECT_NAME}" ./main.cpp)
target_link_libraries("${PROJECT_NAME}" Eigen3::Eigen)
我只下载了头文件Eigen 3.3.7库,并将文件夹重命名为eigen3。然后将该文件夹移动到:
/usr/local/share/eigen3
当我运行cmake CMakeLists.txt
时,出现以下错误:CMake Error at CMakeLists.txt:5 (find_package):
Could not find a package configuration file provided by "Eigen3" (requested
version 3.3) with any of the following names:
Eigen3Config.cmake
eigen3-config.cmake
Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
"Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring incomplete, errors occurred!
当我检查Eigen库文件夹时,我发现
/usr/local/share/eigen3/cmake
只包含一个名为Eigen3Config.cmake.in的文件,而不是所需的Eigen3Config.cmake。为什么会这样?我尝试将文件重命名为Eigen3Config.cmake,但出现了以下错误:
CMake Error at CMakeLists.txt:5 (find_package):
Could not find a configuration file for package "Eigen3" that is compatible
with requested version "3.3".
The following configuration files were considered but not accepted:
/usr/local/share/eigen3/cmake/Eigen3Config.cmake, version: unknown
-- Configuring incomplete, errors occurred!
此外,我还尝试了在stackoverflow: CMake find_package not working for Eigen?中解释的解决方案,但没有成功。
我该如何使它正常工作?我认为我还不太理解底层系统。任何解释都将不胜感激。
Eigen3Config.cmake.in
是一个模板。当您构建项目时,文件Eigen3Config.cmake.in
将被转换为可用的Eigen3Config.cmake
文件。 - fdk1342Eigen3Config.cmake
文件才能构建项目。如果我只能通过构建项目来生成该文件,那么这将会产生循环依赖,这让我有些困惑。或者你所说的构建项目是指什么? - Manumerous