Can';t在CMake C+中不包括LibXML2文件+;项目(使用QtCreator IDE) 我正在QtCreator上开发一个基于CGED的C++项目。我正试图在我的项目中使用mlpack,但一旦我将行#include包含到我唯一的源文件中,我就会收到一个与mlpack/core.hpp包含的某些libxml文件相关的错误: In file included from /usr/local/include/mlpack/core/util/save_restore_utility.hpp:26:0, from /usr/local/include/mlpack/core.hpp:171, from /home/revinci/code/workspaces/qt_ws/Semantic_Perception/src/features_slic.cpp:18: /usr/include/libxml2/libxml/parser.h:15:31: fatal error: libxml/xmlversion.h: No such file or directory #include <libxml/xmlversion.h>

Can';t在CMake C+中不包括LibXML2文件+;项目(使用QtCreator IDE) 我正在QtCreator上开发一个基于CGED的C++项目。我正试图在我的项目中使用mlpack,但一旦我将行#include包含到我唯一的源文件中,我就会收到一个与mlpack/core.hpp包含的某些libxml文件相关的错误: In file included from /usr/local/include/mlpack/core/util/save_restore_utility.hpp:26:0, from /usr/local/include/mlpack/core.hpp:171, from /home/revinci/code/workspaces/qt_ws/Semantic_Perception/src/features_slic.cpp:18: /usr/include/libxml2/libxml/parser.h:15:31: fatal error: libxml/xmlversion.h: No such file or directory #include <libxml/xmlversion.h>,c++,qt-creator,libxml2,mlpack,C++,Qt Creator,Libxml2,Mlpack,这基本上告诉我它找不到xmlexports.h(包含在xmlversion.h中)。更重要的是,xmlexports.h与xmlversion.h和parser.h位于同一目录中 我尝试了上面提到的解决方案并安装了libxml2dev(再次)和libxslt1dev,但我的问题没有得到解决 我认为这可能与正确指定include路径有关。我尝试将/usr/include/libxml2添加到QtCreator中构建环境中存在的各种路径环境变量(path、include\u path和CPATH),

这基本上告诉我它找不到
xmlexports.h
(包含在
xmlversion.h
中)。更重要的是,
xmlexports.h
xmlversion.h
parser.h
位于同一目录中

我尝试了上面提到的解决方案并安装了
libxml2dev
(再次)和
libxslt1dev
,但我的问题没有得到解决

我认为这可能与正确指定include路径有关。我尝试将
/usr/include/libxml2
添加到QtCreator中构建环境中存在的各种路径环境变量(
path
include\u path
CPATH
),但没有效果。我的
CMakeLists.txt
如下所示:

    project(Semantic_Perception)
    cmake_minimum_required(VERSION 2.8)



    #Vigra Headers
    include_directories(
        include
    )
    file(GLOB_RECURSE VigraImpex include/impex/)
    add_library(VigraImpex ${VigraImpex})

    #LibXml2 Headers
    find_package(LibXml2 REQUIRED)

    #Armadillo Headedrs
    find_package(Armadillo REQUIRED)
    include_directories(${ARMADILLO_INCLUDE_DIRS})

    #Boost Headers
    find_package(Boost 1.54.0 REQUIRED)



    add_executable(features_slic src/features_slic.cpp)
    target_link_libraries(features_slic
        VigraImpex
        ${ARMADILLO_LIBRARIES}
    )

顺便说一句:LibXml2、Armadillo和Boost都是我试图使用的库的依赖项-mlpack。命令
find\u pakcage(mlpack)
不起作用,因为在我的系统中任何地方都没有
Findmlpack.cmake
文件,我在internet上也找不到。

您可能应该在
find\u包(需要LIBXML2)行之后添加
include\u目录(${LIBXML2\u include\u DIR})
,到目前为止,我只是(痛苦地)将所有
#include
更改为
#include“*.h”
,这样我就可以继续我的项目了。我一做完(可能还有两天)就会试试你的建议。啊,是的,效果很好!不过,我还有一个后续问题。您如何知道要在
include\u目录中使用的变量的名称?我以前尝试过添加行
include\u目录(${LIBXML2\u include\u DIRS})
(基于一个类似的添加对犰狳有效的事实),但没有成功。
    project(Semantic_Perception)
    cmake_minimum_required(VERSION 2.8)



    #Vigra Headers
    include_directories(
        include
    )
    file(GLOB_RECURSE VigraImpex include/impex/)
    add_library(VigraImpex ${VigraImpex})

    #LibXml2 Headers
    find_package(LibXml2 REQUIRED)

    #Armadillo Headedrs
    find_package(Armadillo REQUIRED)
    include_directories(${ARMADILLO_INCLUDE_DIRS})

    #Boost Headers
    find_package(Boost 1.54.0 REQUIRED)



    add_executable(features_slic src/features_slic.cpp)
    target_link_libraries(features_slic
        VigraImpex
        ${ARMADILLO_LIBRARIES}
    )