通常情況下,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