我正在使用mlpack库(C++机器学习库)。我按照这里的keon的步骤进行操作:构建mlpack,但在执行到最后一步构建mlpack时,命令行中出现了以下错误:
-- Building for: Visual Studio 14 2015-- The C compiler identification is MSVC 19.0.24213.1-- The CXX compiler identification is MSVC 19.0.24213.1-- Check for working C compiler: F:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe-- Check for working C compiler: F:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Check for working CXX compiler: F:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe-- Check for working CXX compiler: F:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Detecting CXX compile features-- Detecting CXX compile features - doneCMake Warning (dev) at CMakeLists.txt:51 (if):Policy CMP0054 is not set: Only interpret if() arguments as variables orkeywords when unquoted. Run "cmake --help-policy CMP0054" for policydetails. Use the cmake_policy command to set the policy and suppress thiswarning.Quoted variables like "MSVC" will no longer be dereferenced when the policyis set to NEW. Since the policy is not set the OLD behavior will be used.This warning is for project developers. Use -Wno-dev to suppress it.CMake Warning (dev) at CMakeLists.txt:64 (if):Policy CMP0054 is not set: Only interpret if() arguments as variables orkeywords when unquoted. Run "cmake --help-policy CMP0054" for policydetails. Use the cmake_policy command to set the policy and suppress thiswarning.Quoted variables like "MSVC" will no longer be dereferenced when the policyis set to NEW. Since the policy is not set the OLD behavior will be used.This warning is for project developers. Use -Wno-dev to suppress it.CMake Error at CMake/FindArmadillo.cmake:326 (message):ARMADILLO_INCLUDE_DIR-NOTFOUND/armadillo_bits/config.hpp not found! Cannotdetermine what to link against.Call Stack (most recent call first):CMakeLists.txt:189 (find_package)
回答:
你的armadillo安装可能出现了问题,更具体地说,你没有指定armadillo的包含目录。
根据这个更详细的说明,第10点:
指定库、dll的路径并设置一些定义,详细信息可以在这里找到
因此,你可以尝试在mlpack的CMakeLists.txt中添加以下几行代码:
set(ARMADILLO_LIBRARY "C:/Users/yyyy/Qt/3rdLibs/armadillo/armadillo-5.600.2/vc2015_build/bin/vc2015_x86_amd64/release")set(ARMADILLO_INCLUDE_DIR "C:/Users/yyyy/Qt/3rdLibs/armadillo/armadillo-5.600.2/include")