在我的系统(Fedora 26)上,我使用yum(aka dnf)安装了XercesC。 XercesC头文件位于
/usr/include/xercesc-2.7.0/xercesc
,图书馆是
/usr/lib64/libxerces-c.so.27。
我尝试了官方FindXercesC.cmake
以及此发现包的许多发布版本。我还尝试对发布的*.cmake
文件进行多次编辑。他们都没有找到XercesC,我不得不手动输入标题和库的位置。
是否有XercesC的CMake软件包查找器会自动在我的系统上找到XercesC?
答案 0 :(得分: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-config
和find_package
的 CONFIG 模式搜索包。可能这些变体不需要额外的提示。
可以使用pkg_check_modules通过pkg-config
进行搜索,在 CONFIG 模式下使用find_package
,可以将此选项添加到调用find_package(XercesC)
,或者只是删除FindXercesC.cmake
脚本。