1
我創建一個庫(稱爲fmi2),我打算安裝在我的本地機器上(通過包管理器),然後鏈接到一堆其他庫。在哪裏安裝FindLib.cmake
我將提供一個Findfmi2.cmake文件,以便我可以從我的其他庫中調用find_package(fmi2)
,但應該在何處安裝該文件?
這裏有一些選擇,我認爲和他們的問題:
/usr/share/cmake-3.8/Modules/Findfmi2.cmake
- 優勢:
find_package(fmi2)
將只是工作 - 缺點:只適用於cmake的一個版本
- 優勢:
/usr/share/cmake/Modules/Findfmi2.cmake
- 優點:適用於任何版本的cmake
- 缺點:這不是默認文件夾。我們需要添加
set(CMAKE_MODULES_PATH /usr/share/cmake/Modules)
,這會殺死任何可移植性。
${CMAKE_CURRENT_SOURCE_DIR}/cmake/Findfmi2.cmake
- 優勢:便於攜帶,只需要添加
set(CMAKE_MODULES_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
- 缺點:不是系統範圍內。需要手動將此文件添加到每個使用它的庫。這複製了我的框架中的文件。
- 優勢:便於攜帶,只需要添加
前段時間我有一個[類似的問題](https://stackoverflow.com/questions/44920389/installing-a-cmake-library-also-ship-find-modules-for-the-dependencies),會對聽到你的問題的答案非常感興趣! – oLen