在我的系统(Fedora 26)上,我使用yum(aka dnf)安装了XercesC。 XercesC头文件位于
/US人/include/秀儿测三次-2.7.0/秀儿测三次
而图书馆是
/US人/礼拜64/李秉宪而测试-从.so.27.
我已经尝试过官方的FindXercesC.cmake
以及这个包发现者的一些发布版本。我还尝试对发布的*.cmake
文件进行多次编辑。他们都没有找到XercesC,我不得不手动输入标题和库的位置。
是否有XercesC的CMake软件包查找器会自动在我的系统上找到XercesC?
通常,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-config
和find_package
的CONFIG模式搜索包。可能这些变体不需要额外的提示。
通过pkg-config
搜索可以使用pkg_check_modules执行,在CONFIG模式下使用find_package
要么将此选项添加到调用find_package(XercesC)
,要么只是删除FindXercesC.cmake
脚本。