通常情况下,CMake搜索的东西只在默认目录中。例如,/usr/include
目录会自动搜索头文件。
但是目录/usr/include/xercesc-2.7.0
不是CMake的默认值(它也不是编译器的默认值),所以CMake在没有明确提示的情况下找不到东西。为了提示CMake关于include目录的搜索,设置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只能找到没有的版本,因此版本号为,所以它找不到文件/usr/lib64/libxerces-c.so.27
。找到一个文件/usr/lib64/xercesc-2.7.0/libxerces-c.so
你需要提示CMake CMAKE_LIBRARY_PATH变量。
根据该xercesc sources,它支持通过pkg-config
和经由CONFIG的find_package
模式搜索包。可能这些变体不需要额外的提示。
通过pkg-config
搜索可以pkg_check_modules在CONFIG模式可以在本选项添加到通话find_package(XercesC)
,或者干脆删除FindXercesC.cmake
脚本来执行,使用find_package
。
如果您没有发布cmake代码,很难弄清楚发生了什么。 –
目录'/ usr/include/xercesc-2.7.0'绝对不是默认包含路径。不知道为什么Fedora选择在那里安装软件包。通过设置[CMAKE_INCLUDE_PATH](https://cmake.org/cmake/help/v3.7/variable/CMAKE_INCLUDE_PATH.html)变量(从命令行或在脚本中)提示CMake。另外,你应该有一个没有* so版本的库,可以被CMake检测到。将**精确错误消息**添加到问题文章中。 – Tsyvarev
谢谢。没有如此版本的库位于/usr/lib64/xercesc-2.7.0。将CMAKE_INCLUDE_PATH和CMAKE_LIBRARY_PATH变量设置为适当的目录解决了问题。 – jsnark