日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cmake学习(一)静态库与动态库构建

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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功能相對

總結

以上是生活随笔為你收集整理的cmake学习(一)静态库与动态库构建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。