CMake FindXercesC.cmake找不到我的XercesC

问题描述 投票:0回答:1

在我的系统(Fedora 26)上,我使用yum(aka dnf)安装了XercesC。 XercesC头文件位于

/US人/include/秀儿测三次-2.7.0/秀儿测三次

而图书馆是

/US人/礼拜64/李秉宪而测试-从.so.27.

我已经尝试过官方的FindXercesC.cmake以及这个包发现者的一些发布版本。我还尝试对发布的*.cmake文件进行多次编辑。他们都没有找到XercesC,我不得不手动输入标题和库的位置。

是否有XercesC的CMake软件包查找器会自动在我的系统上找到XercesC?

c++ cmake xerces
1个回答
1
投票

通常,CMake仅在默认目录中搜索内容。例如,/usr/include目录会自动搜索头文件。

但目录/usr/include/xercesc-2.7.0不是CMake的默认值(它也不是编译器的默认值),所以如果没有明确的提示,CMake就无法找到它。有关包含要搜索的目录的提示,请设置CMAKE_INCLUDE_PATH变量。例如,通过命令行:

cmake -DCMAKE_INCLUDE_PATH=/usr/include/xercesc-2.7.0 <other_params>

搜索库文件也是如此:CMake会自动搜索/usr/lib64/下的库,但不会搜索/usr/lib64/xercesc-2.7.0下的库。此外,CMake只能找到没有so-version的库,因此无法找到文件/usr/lib64/libxerces-c.so.27。要查找文件/usr/lib64/xercesc-2.7.0/libxerces-c.so,您需要使用CMAKE_LIBRARY_PATH变量提示CMake。


根据xercesc sources,它支持通过pkg-configfind_package的CONFIG模式搜索包。可能这些变体不需要额外的提示。

通过pkg-config搜索可以使用pkg_check_modules执行,在CONFIG模式下使用find_package要么将此选项添加到调用find_package(XercesC),要么只是删除FindXercesC.cmake脚本。

© www.soinside.com 2019 - 2024. All rights reserved.