<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    實戰C/C++ 的依賴管理工具 – Conan

    • 發布:C++培訓
    • 來源:資料庫
    • 時間:2017-09-29 16:25

    在高級編程語言中,C/C++ 廣受開發人員的親睞,在語言排名上也名列前茅,生命力旺盛,而作為一個C/C++ 程序猿,隨著開源模塊(車輪)的不斷創造,你在使用什么工具或方法管理你的依賴和模塊化你的開發成果,創造屬于你的世界車輪,你還在用 GIT/SVN 管理 C/C++ 的依賴嗎?目前已經有愛立信等國際大公司大規模使用 Conan 做C++的包依賴的管理。今天跟大家一起實戰 Conan 進行 C/C++ 依賴管理。

    背景

    具體背景和介紹可以穿越到我們上一篇 C/C++ 依賴原理工具,這里作簡單回顧,本篇文章主要進行實戰和落地。

    大部分語言都已經有了專門的依賴解析工具,例如 Maven,Pypi,NPM。我們可以使用 Maven Package 來下載第三方依賴并進行編譯構建。

    但是 C/C++呢?缺少一個統一的依賴管理的工具,這是 C/C++開發者的一大痛點。

    這個問題是由于一些歷史原因導致的:

    1. 不同的操作系統,不同的編譯器和芯片架構

    2. 不同的構建系統

    3. 不同的獲取依賴方法

    Conan依賴管理工具優點

    通過使用 Conan,我們可以得到以下收益

    ? 統一本地中心倉庫(私服),去中心化。

    ? 統一集成風格與規范,依賴管理變的更簡單(跨平臺多環境)

    ? 方便團隊共享模塊,減少重復車輪,降低工程大小

    ? 降低不同編譯環境依賴的復雜度

    ? 版本化管理,保證一致性

    ? 減少人工拷貝等操作帶來的風險

    ? 依賴編譯后的文件,加快構建速度

    實戰 Conan ,進行依賴管理

    下面,我們分幾個步驟進行 Conan 的實戰與落地:

    1. 安裝 Conan 客戶端

    2. Conan 全局配置介紹

    3. 創建 Demo 項目使用 Conan 依賴進行編譯構建

    4. 安裝 Conan 私服 Artifactory

    5. 創建一個新的模塊并上傳到私服,供其他人員依賴使用

    6. 模塊開發測試生命周期管理實踐

    7. 一鍵進行不同環境編譯構建

    8. 遷移現有項目到 Conan 項目

    Setup 安裝

    支持以下方式安裝:

    Binaries, pip, brew, from source code…

    我的環境(Mac):

    – $ brew install conan

    – $ brew install cmake

    Conan 全局配置文件

    conan.conf

    包含本地包存儲路徑、日志級別,默認構建參數等全局變量。

    settings.yml

    預定義了 Conan 執行命令時的參數范圍,如操作系統,編譯器及芯片架構等。

    registry.txt

    中心倉庫或公司內部私服的服務器地址及用戶認證信息。

    創建 Demo 項目并使用 Conan

    依賴進行編譯構建

    項目結構如下:

    其中 main.cpp 是新開發的項目代碼,conanfile.txt 定義依賴哪些第三方模塊。

    main.cpp

    其中 include 一個已存在模塊,其中包含 hello.h 文件。

    conanfile.txt

    Requires 標簽描述依賴模塊坐標

    Hello/0.1@demo/testing 對應 模塊名稱/版本@user/channel(Channel 用于區分環境或用途)

    Generators 標簽描述對應開發編譯工具,會對應生成用于編譯構建的文件

    指定 CMake 會生成對應 CMake 規范工程文件,包含編譯需要的依賴配置,同理 visual_studio。

    編譯構建

    創建并進入 Build 目錄,執行 Conan Install 命令,進行依賴下載, -s 可以指定編譯的芯片架構,同時生成相應 CMake 標準工程文件,之后可以通過 CMake 進行編譯產生二進制可執行文件 Greet。

    安裝 Conan 私服 Artifactory

    本次 Demo 使用 Artifactory 作為 Conan 私服。

    JFrog Artifactory 已經支持 Conan 倉庫,全力加速 C/C++開發。

    安裝引導參考官方文檔:https://www.jfrog.com/confluence/

    另附30天免費試用版申請鏈接:

    https://www.jfrog.com/artifactory/free-trial/?lang=zh-hans#High-Availability

    創建一個新模塊并上傳到私服

    使用 Conan New 命令創建一個模塊包。

    該命令會生成 conanfile.py 文件,該文件定義了功能模塊的基本描述(坐標),以及模塊構建的生命周期,包括:源碼、配置、構建、打包等階段,并由 Python文件定義,可以自行靈活修改。

    之后可以通過 Conan Install 命令按照生命周期進行編譯構建。

    構建之后通過 Conan Export 命令導出模塊到本地倉庫,可以在本地為其他項目提供依賴,類似 Mvn Install。

    同時我們可以上傳到公司私服,對外提供依賴服務,使用 Conan Upload 命令將模塊上傳到私服,-r 參數可以指定具體私服。

    上傳到私服效果展示:

    模塊開發測試生命周期管理實踐

    軟件開發都會有其對應的生命周期,開發,測試,生產,Conan 同時對此做了相應支持,不難發現,上文中在模塊的坐標定義中已有相應說明,Hello/0.1@user/testing. 其中 Testing 描述了軟件生命周期中對應的階段。

    當我們測試通過之后,我們可以通過命令或 API 將包快速升級到生產階段,避免多次構建。

    一鍵進行不同環境編譯構建

    C/C++ 日常開發中會遇到需要在不同架構 ,不同編譯器版本上進行測試,工作量不小,在 Conan 官網和社區,也提供了很多提高效率的工具:

    ? Pip install conan-package-tools

    ? Travis-ci (Linux, OSX), with docker

    ? Appveyor (Win)

    通過借助 Docker 構建不同架構或不同編譯器版本(gcc 4.6,4.8,5.2,5.3 etc)的二進制包,進行測試或發布, 可以幫助我們實現一鍵編譯,大大提高工作效率。

    遷移現有項目到 Conan 項目

    有了強大的依賴管理工具,就需要考慮遷移我們現有項目到 Conan 上來,原則上遷移可以選擇一個項目團隊先進行試點。上文中創建一個新的模塊中提到構建生命周期,我們可以為遷移項目創建相應的 conanfile.py, 并根據公司情況自定義各個階段的執行過程,成熟形成一定規范之后進行大規模遷移。

    總結

    Conan 為我們提供了統一的依賴管理和構建規范,通過統一 Conanfile 來描述依賴模塊的坐標,并支持主流構建編譯工具,CMake,Visual Studio xcode等。同時 Conan 也支持其他類型語言的依賴管理,例如現在很火的 Golang。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:C程序變量和C運算符的初步認識
    下一篇:C++中引用(&)的用法和應用實例

    超全的C語言標識符知識

    C指針——指針類型轉換

    C指針——指針和結構類型的關系

    C指針——數組和指針的關系

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>