cmake学习(一)静态库与动态库构建
生活随笔
收集整理的這篇文章主要介紹了
cmake学习(一)静态库与动态库构建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(.so)共享庫,shared object:節省空間,在運行時去連接,如果執行機器上沒有這些庫文件就不能執行。
(.a)靜態庫,archive:靜態庫和程序化為一體,不會分開。
通過 ldd命令可以查看一個可執行程序所依賴的的共享庫。
使用環境變量LD_LIBRARY_DIRECTORY可以指定共享庫位置
一、編譯共享庫: ADD_LIBRARY(hello SHARED ${SHARED_LIBRARY})
二、添加靜態庫: ADD_LIBRARY(hello STATIC ${STATIC_LIBRARY}) 因為默認規則是不能有相同名字的共享庫與靜態庫,所以當生成靜態庫的時候(so后綴),共享庫會被刪除,因為只能允許一個名字存在,相同名字的會被替代(hello),所以需要通過SET_TARGET_PROPERTIES()來解決這個問題,例子: SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") cmake在構建一個target的時候,會刪除之前生成的target,一樣是通過設置SET_TARGET_PROPERTIES(hello PROPERTIES CLEAN_DIRECT_OUTPUT 1)來達到目的 三、動態庫的版本號: 同樣是通過SET_TARGET_PROPERTIES()來設置 SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1) VERSION:動態庫版本 SOVERSION:API版本 最后生成的結果是: libhello.so.1.2 libhello.so.1->libhello.so.1.2 libhello.so->libhello.so.1 四、安裝: INSTALL(TARGETS hello hello_static? LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) INSTALL(TARGETS hello.h DESTINATION include/hello) 其他常用的屬性 PERMISSIONS:設置權限;RATTERN:設置正則表達式
Summary: ADD_LIBRARY():添加一個庫,共享庫,靜態庫,模塊 SET_TARGET_PROPERTIES():設置輸出名稱,版本號,解決相同target被刪除的問題 GET_TARGET_PROEERTIES():與SET功能相對
一、編譯共享庫: ADD_LIBRARY(hello SHARED ${SHARED_LIBRARY})
二、添加靜態庫: ADD_LIBRARY(hello STATIC ${STATIC_LIBRARY}) 因為默認規則是不能有相同名字的共享庫與靜態庫,所以當生成靜態庫的時候(so后綴),共享庫會被刪除,因為只能允許一個名字存在,相同名字的會被替代(hello),所以需要通過SET_TARGET_PROPERTIES()來解決這個問題,例子: SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") cmake在構建一個target的時候,會刪除之前生成的target,一樣是通過設置SET_TARGET_PROPERTIES(hello PROPERTIES CLEAN_DIRECT_OUTPUT 1)來達到目的 三、動態庫的版本號: 同樣是通過SET_TARGET_PROPERTIES()來設置 SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1) VERSION:動態庫版本 SOVERSION:API版本 最后生成的結果是: libhello.so.1.2 libhello.so.1->libhello.so.1.2 libhello.so->libhello.so.1 四、安裝: INSTALL(TARGETS hello hello_static? LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) INSTALL(TARGETS hello.h DESTINATION include/hello) 其他常用的屬性 PERMISSIONS:設置權限;RATTERN:設置正則表達式
Summary: ADD_LIBRARY():添加一個庫,共享庫,靜態庫,模塊 SET_TARGET_PROPERTIES():設置輸出名稱,版本號,解決相同target被刪除的問題 GET_TARGET_PROEERTIES():與SET功能相對
總結
以上是生活随笔為你收集整理的cmake学习(一)静态库与动态库构建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟货币是什么?虚拟货币有哪些?
- 下一篇: 外汇理财安全吗?外汇理财有哪些风险