在我的CMake腳本中,我需要爲不同的庫指定,即我的項目鏈接到gcc的不同類型的鏈接。衆所周知,使用-Wl,-Bstatic
和-Wl,-Bdynamic
這樣的混合選項。但是有可能在cmake腳本中以某種方式指定它?如何在CMake中指定鏈接類型?
4
A
回答
1
我們用了幾個宏在Linux/MacOSX的調整CMake的首選搜索順序,以動態和靜態鏈接庫
macro(prefer_static)
if(NOT WIN32)
list(REMOVE_ITEM CMAKE_FIND_LIBRARY_SUFFIXES ".a")
list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 ".a")
endif()
endmacro()
macro(prefer_dynamic)
if(NOT WIN32)
list(REMOVE_ITEM CMAKE_FIND_LIBRARY_SUFFIXES ".a")
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".a")
endif()
endmacro()
我們再調用適當的prefer_static()
或prefer_dynamic()
之間切換在致電find_library(...)
或find_package(...)
之前的例行程序。當靜態庫不可用時,這具有共享庫的「回退」優勢,反之亦然。
這對於Windows版本不起作用,因爲您始終使用Visual Studio和(AFAIK)鏈接到.lib
文件,因此沒有直接的方法來確定它是靜態還是動態庫。
0
在CMake的find_library
可以用於此目的。
find_library(VAR libMyLib.a)
OR SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") find_library(VAR MyLib)
相關問題
- 1. CMake OpenCV無法指定鏈接庫
- 2. 如何在類(T)中指定可接受的類型?
- 3. 在CMake中鏈接MySQL Librarys
- 4. 如何鏈接到cmake中的mosquitto lib?
- 5. 如何鏈接CMake中的QtMain和Qt5?
- 6. CMake的OpenCV中無法指定鏈接庫
- 7. 如何只在Android webview中加載特定類型的鏈接?
- 8. 如何在泛型參數中指定類和接口?
- 9. CMAKE DSO鏈接
- 10. cmake minizip鏈接
- 11. 如何指定泛型類?
- 12. 如何直接在java中爲原始數據類型指定自定義類
- 13. Q_OBJECT在將qmake項目轉換爲cmake時未指定類型
- 14. CMake:指定構建工具鏈
- 15. 如何在鏈接爲圖片時指定鏈接文本?
- 16. CMake用戶構建庫;無法爲目標指定鏈接庫
- 17. 如何在COM接口定義中指定用戶定義的類型參數?
- 18. 如何在Javadoc鏈接中使用泛型類型參數?
- 19. 如何在類型描述中指定類定義作爲參數類型
- 20. CMake:無論如何強制鏈接庫?
- 21. 如何使用cmake鏈接boost.system
- 22. 如何通過cmake鏈接ffmpeg庫?
- 23. 如何編譯openvdb和鏈接cmake
- 24. CMake C++庫鏈接
- 25. 鏈接使用cmake
- 26. CMake鏈接失敗
- 27. CMake鏈接Windows SDK
- 28. 鏈接庫[cmake的]
- 29. 符號鏈接CMake
- 30. 鏈接庫opencv cmake
可以增強宏觀找到用戶定義路徑也圖書館!很好的邏輯。 – bikram990 2013-05-09 11:22:55