在我的系统(Fedora 26)上,我使用 yum(又名 dnf)安装了 XercesC。XercesC 头文件位于
/usr/include/xercesc-2.7.0/xercesc
图书馆是
/usr/lib64/libxerces-c.so.27。
我已经尝试过FindXercesC.cmake
该软件包查找器的官方版本以及许多发布的版本。我还尝试对发布的文件进行多次编辑*.cmake
。他们都无法找到 XercesC,我必须手动输入标头和库的位置。
是否有适用于 XercesC 的 CMake 包查找器可以自动在我的系统上找到 XercesC?
通常,CMake 仅在默认目录中搜索内容。例如,/usr/include
会自动在目录中搜索头文件。
但目录/usr/include/xercesc-2.7.0
不是 CMake 的默认目录(也不是编译器的默认目录),因此如果没有明确的提示,CMake 无法在其中找到内容。有关要搜索的包含目录的 CMake 提示,请设置CMAKE_INCLUDE_PATH变量。例如,通过命令行:
cmake -DCMAKE_INCLUDE_PATH=/usr/include/xercesc-2.7.0 <other_params>
Run Code Online (Sandbox Code Playgroud)
搜索库文件也是如此:CMake 会自动搜索 下的库/usr/lib64/
,但不会搜索/usr/lib64/xercesc-2.7.0
. 另外,CMake只能找到没有so-version的库,因此它找不到文件/usr/lib64/libxerces-c.so.27
。要查找文件,您需要使用CMAKE_LIBRARY_PATH/usr/lib64/xercesc-2.7.0/libxerces-c.so
变量提示 CMake 。
根据xercesc 的消息pkg-config
,它支持通过和 通过CONFIG模式搜索包find_package
。也许,这些变体不需要额外的提示。
可以使用pkg_check_modulespkg-config
执行搜索,要在CONFIG模式下使用,可以将此选项添加到 call 中,或者只需删除脚本。find_package
find_package(XercesC)
FindXercesC.cmake