我正在编译一个第三方库,该库使用以下命令来查找Eigen3:
find_package( PkgConfig )
pkg_check_modules( EIGEN3 REQUIRED eigen3 )
include_directories(${EIGEN3_INCLUDE_DIRS})
find_package( PkgConfig )
命令正确运行,因为我指定了PKG_CONFIG_EXECUTABLE
变量。但是pkg_check_modules( EIGEN3 REQUIRED eigen3 )
返回错误:
-检查模块'eigen3'
-未找到软件包“ eigen3”
Eigen3的official webpage说:“不需要使用CMake或安装任何东西。”我花了很长时间才意识到这个说法是错误的。因此,我运行以下命令来编译并安装Eigen3(版本3.3.5):
cmake -DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_INSTALL_PREFIX=E:\3rd-parties\eigen-3.3.5\install_ -G"Visual Studio 14 2015 Win64" ..
编译和安装过程均成功,因为我没有在VS2015中看到任何故障。但是,当我回到第3方库的build文件夹并再次运行cmake时,我得到了完全相同的错误。 Eigen3 official website仅使用find_package
提供了一条指令,但没有提供pkg-config.exe,因此我接下来搜索Google并找到了此thread。答案说我们需要“在eigen3 cmake中启用pkg-config支持”。我不知道如何启用它。为此有任何特定的CMake变量吗?由于这是一个新问题,Eigen's main page说:“要获得帮助,stackoverflow是您的最佳资源。”所以我来这里寻求帮助。我的问题是:如何在eigen3中启用pkg-config支持?或者换一种说法:如何传递pkg_check_modules( EIGEN3 REQUIRED eigen3 )
cmake命令?非常感谢。
PS:我正在Windows 10上工作。
答案 0 :(得分:1)
根据Eigen3 sources,选项EIGEN_BUILD_PKGCONFIG
对pkg-config
的支持负责。
在Windows上,整个选项都被禁用,但是您可以尝试设置它:
cmake -DEIGEN_BUILD_PKGCONFIG=ON <... other arguments>
在CMake脚本中使用pkg-config
查找Eigen3时,请确保CMAKE_PREFIX_PATH
变量中列出了Eigen3的安装目录。 (如果项目使用的CMake版本低于3.1,则需要另外将PKG_CONFIG_USE_CMAKE_PREFIX_PATH
设置为ON
,以使pkgconfig
模块使用变量CMAKE_PREFIX_PATH
。请参见pkgconfig
模块中的documentation。)