CMake找不到我的 Eigen3 软件包。我设置了一个环境变量
EIGEN3_INCLUDE_DIR
指向
FindEigen3.cmake
所在的路径。然后我在CMakelists.txt中写道:
find_package( Eigen3 REQUIRED )
include_directories( EIGEN3_INCLUDE_DIR )
我收到下一条错误消息:
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:91 (MESSAGE):
Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
(Required is at least version "2.91.0")
Call Stack (most recent call first):
C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:252 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindEigen3.cmake:76 (find_package_handle_standard_args)
test/test_quaternion/CMakeLists.txt:25 (find_package)
对我缺少或做错的事情有任何想法吗
最佳答案
由于Eigen3完全是仅 header ,因此您所需要的只是include目录的路径。而且,无论如何,您已经在手动定义。因此,真正不需要FindEigen3.cmake
或FIND_PACKAGE
调用。
只需使用
INCLUDE_DIRECTORIES ( "$ENV{EIGEN3_INCLUDE_DIR}" )
要么
SET( EIGEN3_INCLUDE_DIR "$ENV{EIGEN3_INCLUDE_DIR}" )
IF( NOT EIGEN3_INCLUDE_DIR )
MESSAGE( FATAL_ERROR "Please point the environment variable EIGEN3_INCLUDE_DIR to the include directory of your Eigen3 installation.")
ENDIF()
INCLUDE_DIRECTORIES ( "${EIGEN3_INCLUDE_DIR}" )
一些注意事项:
${...}
$ENV{....}
访问环境变量。 CMAKE_MODULE_PATH
指向它所在的目录。不确定,但是可能是CMake也会自动检查当前目录(您的CMakeLists.txt
所在的位置。无论如何,设置EIGEN3_INCLUDE_DIR
与FindEigen3.cmake
的位置完全无关FindEigen3
脚本可能会评估此变量以确定Eigen3安装的位置。 <PackageName>Config.cmake
。如果将名为<PackageName>_DIR
的变量指向包含此文件的目录,则可以正常使用FIND_PACKAGE( <PackageName> ...)
。有关详细信息,请参见documentation of FIND_PACKAGE。