CMake 找不到我的Eigen3包裹。我设置了一个名为的环境变量
EIGEN3_INCLUDE_DIR
指向路径所在的位置FindEigen3.cmake
is.
然后在 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 完全只是标头,因此您所需要的只是包含目录的路径。无论如何,您已经手动定义了这一点。所以没有真正需要FindEigen3.cmake
or FIND_PACKAGE
call.
只需使用
INCLUDE_DIRECTORIES ( "$ENV{EIGEN3_INCLUDE_DIR}" )
or
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}" )
一些注意事项:
- 如果您想访问contentCMake 变量的,请确保使用
${...}
-
$ENV{....}
访问环境变量。
- 如果未设置环境变量(因此 EIGEN3_INCLUDE_DIR cmake 变量为空),第二个示例将停止并出现错误
- 如果(评估的)变量可能包含空格,请小心使用引号。否则,CMake 会将其解释为列表。
- 如果您想使用自定义查找模块,请确保将它们放置在 CMake 安装中,或者如 @Fraser 上面指出的那样,确保指向
CMAKE_MODULE_PATH
到它所在的目录。不确定,但 CMake 也可能会自动检查当前目录(您的目录)CMakeLists.txt
居住。无论如何,设置EIGEN3_INCLUDE_DIR
与位置完全无关FindEigen3.cmake
- 然而,这可能是你的
FindEigen3
script 评估此变量来确定 Eigen3 安装的位置。
- 或者,基于 CMake 的自建项目通常提供
<PackageName>Config.cmake
。如果你指向一个名为<PackageName>_DIR
到包含该文件的目录,您可以使用FIND_PACKAGE( <PackageName> ...)
像平常一样。看FIND_PACKAGE 的文档 http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:find_package了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)