c++ - cmake 找不到 LibXml2

标签 c++ cmake libxml2

我正在尝试使用 Cmake 构建 C++ 项目,但它找不到我已正确下载并安装的 LibXml2 库(我相信)。这是在装有 cmake 3.7.1 的 Windows 10 机器上。

这是 cmake 配置文件的相关部分:

find_package(LibXml2 REQUIRED)
include_directories(${LIBXML2_INCLUDE_DIR})
set(LIBS ${LIBS} ${LIBXML2_LIBRARIES})

这是我的环境变量:

LIBXML2_INCLUDE_DIR=C:\Program Files\libxml2\include
LIBXML2_LIBRARIES=C:\Program Files\libxml2\lib

下面是 C:\Program Files\libxml2 目录的内容:

/mnt/c/Program Files/libxml2$ tree .
.
├── bin
│   ├── libxml2.dll
│   ├── xmlcatalog.exe
│   └── xmllint.exe
├── include
│   └── libxml
│       ├── c14n.h
│       ├── catalog.h
│       ├── chvalid.h
│       ├── debugXML.h
│       ├── dict.h
│       ├── DOCBparser.h
│       ├── encoding.h
│       ├── entities.h
│       ├── globals.h
│       ├── hash.h
│       ├── HTMLparser.h
│       ├── HTMLtree.h
│       ├── list.h
│       ├── nanoftp.h
│       ├── nanohttp.h
│       ├── parser.h
│       ├── parserInternals.h
│       ├── pattern.h
│       ├── relaxng.h
│       ├── SAX2.h
│       ├── SAX.h
│       ├── schemasInternals.h
│       ├── schematron.h
│       ├── threads.h
│       ├── tree.h
│       ├── uri.h
│       ├── valid.h
│       ├── xinclude.h
│       ├── xlink.h
│       ├── xmlautomata.h
│       ├── xmlerror.h
│       ├── xmlexports.h
│       ├── xmlIO.h
│       ├── xmlmemory.h
│       ├── xmlmodule.h
│       ├── xmlreader.h
│       ├── xmlregexp.h
│       ├── xmlsave.h
│       ├── xmlschemas.h
│       ├── xmlschemastypes.h
│       ├── xmlstring.h
│       ├── xmlunicode.h
│       ├── xmlversion.h
│       ├── xmlwriter.h
│       ├── xpath.h
│       ├── xpathInternals.h
│       └── xpointer.h
├── lib
│   ├── libxml2_a_dll.lib
│   ├── libxml2_a.lib
│   └── libxml2.lib
└── readme.txt

我收到的 cmake 输出是:

CMake Error at C:/Program Files/CMake/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138 (message): Could NOT find LibXml2 (missing: LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR) Call Stack (most recent call first): C:/Program Files/CMake/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) C:/Program Files/CMake/share/cmake-3.7/Modules/FindLibXml2.cmake:58 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)

我已经和这个问题纠缠了一天左右,谁能告诉我我做错了什么?

最佳答案

当您运行 CMake 时,在 via -D 中定义变量并使用斜杠作为目录分隔符(并使用退格符来转义目录名称中的空格。

cmake .. -DLIBXML2_INCLUDE_DIR:PATH=C:/Program\ Files/libxml2/include -DLIBXML2_LIBRARIES:PATH=C:/Program\ Files/libxml2/lib

关于c++ - cmake 找不到 LibXml2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41897622/

相关文章:

php - LIBXML_NOENT 有什么作用(为什么不叫 LIBXML_ENT)?

c - 使用 libxml 函数进行错误处理

c++ - 类和结构之间的区别

c++ - CMake + 库达 : compile cpp files in Cuda-mode (--x=cu)

c++ - CUDA 直方图遇到非法内存访问 (77)

makefile - 仅当源被先前的命令修改时才重建

android - 如何将 JNI 文件链接到外部 Android C 库?

libxml2 - 如何使用 libxml2 编写 CDATA 节点?

c++ - 我们能否仅根据参数是值还是引用来重载函数?

c++ - 将 std::function 与函数指针作为参数传递时出错