2013-03-30 51 views
3

我在寫一個小型庫。 我想建立它作爲共享庫,並生成「MyLibraryConfig.cmake」文件,然後可以用我的其他項目來找到我的庫。cmake在Windows上導出共享庫

我唯一的問題是找出用於在Windows下鏈接的文件的名稱/路徑 - 生成兩個文件:mylibrary.dll和mylibrary.dll.a。

所以我想產生的東西,如MyLibraryConfig.cmake文件:

「設置(MYLIBRARY_LIBRARIES /blah/blah/mylibrary.dll.a)」

所以後來MYLIBRARY_LIBRARIES可以搭配我的其他項目的target_link_libraries。

如何獲取該可鏈接文件的名稱?我會很好,如果解決方案平臺independed是(返回Linux上的.so詭計和.dll.a在Windows上)提前

感謝

回答

2

如果你打算讓你的可用庫到其他項目沒有安裝它那麼你想CMake命令export。例如:

export(TARGETS MyLib FILE ${CMAKE_SOURCE_DIR}/MyLibraryConfig.cmake) 

這會在相同的目錄中頂級的CMakeLists.txt文件MyLibraryConfig.cmake,並且可以只是在其他的CMake項目include d。


如果你打算安裝庫中,然後你想使用的install(EXPORT ...)代替:

install(TARGETS MyLib EXPORT MyLibraryConfig 
      RUNTIME DESTINATION bin 
      LIBRARY DESTINATION lib 
      ARCHIVE DESTINATION lib/static) 
install(EXPORT MyLibraryConfig DESTINATION cmake) 

這將安裝文件MyLibraryConfig.cmake到<install path>/cmake,並可以再由其他項目爲include d。

+0

謝謝你的回答。它看起來很有趣和有用,但是我尋找解決方案* *安裝;) –

+0

典型! :-)我已經添加了關於如何處理安裝案例的更多細節。 – Fraser