Conan讓C 專案元件化

2021-10-01 03:35:07 字數 2260 閱讀 2430

隨著專案越來越大,很多基礎的功能模組需要被拆解出來,單獨管理。一方面一些基礎模組很穩定,不需要再花團隊精力去維護,另一方面有些模組可以供其他專案復用,所以元件化勢在必行。

前面兩步參考之前的conan環境搭建和使用介紹,按部就班就可以,第三部自動化管理。**提交後自動觸發或者手動執行,元件更新發布指令碼,指令碼需要引數:元件名、版本號、git位址。指令碼完成以下事項:

呼叫元件工程中的conan指令碼,傳入元件名稱和版本號打包(conan create . name/version@user/channel)

上傳元件到倉庫 (conan upload name.version@user/channel -r=server)

更新管理平台

使用元件的專案編寫conan依賴配置conan.txt,具體可以參考conan使用,因為conan可以根據配置中的generator生成對應vs或者cmake的依賴檔案,基本上是完全自動化的過程。在編譯前執行一次conan install .  generator如果是vs就會生成conanbuildinfo.props檔案,可以手動將屬性檔案新增到對應的工程中(參考考:如果是cmake則生成conanbuildinfo.cmake依賴檔案供cmake專案使用。

conan也有對應的vs外掛程式,會自動檢測本地的conanfile.txt依賴配置檔案,完成安裝和新增屬性檔案到vs。

可按如下方式安排conan生成目錄: debug/property.conan  release/property.conan.

乙個簡單的元件打包配置指令碼:

from conans import conanfile, msbuild

class corecenterconan(conanfile):

license = "mit"

url = ""

settings = "os", "compiler", "build_type", "arch"

exports_sources = "*"

generators = "visual_studio"

def build(self):

msbuild = msbuild(self)

msbuild.build("corecenter.sln")

def package(self):

self.copy("*.h", dst="include", src="source")

self.copy("*.dll", dst="bin", keep_path=false)

self.copy("*.lib", dst="lib", keep_path=false)

def package_info(self):

if self.settings.build_type == "debug":

self.cpp_info.libs = ["corecenter_d"]

else:

self.cpp_info.libs = ["corecenter"]

打包:conan create . corecenter/0.0.1@user/stable -s arch=x86 -s compiler.version=15 -s build_type=debug

conan create . corecenter/0.0.1@user/stable -s arch=x86 -s compiler.version=15 -s build_type=release

將debug和release下的元件打包到corecenter/0.0.1中,

上傳:conan upload corecenter/0.0.1@user/stable --all -r=localconan

乙個簡單的依賴安裝配置:

[requires]

corecenter/0.0.1@user/stable

[generators]

visual_studio

[imports]

bin,*.dll-> ../

安裝依賴:conan install . corecenter/0.0.1@user/stable -s arch=x86 -s compiler.version=15 -s build_type=debug,將生成conanbuildinfo.props放到debug/property.conan中,然後手動新增到vs中。release同樣道理,放到release/property.conan中,手動新增到relase的屬性中。

android studio 搭建元件化專案框架

在搭建元件化專案框架之前,首先要知道殼工程 庫工程 模組工程有乙個了解,然後對專案有乙個規劃。殼工程,一般不存放 用來引用存放庫工程與模組工程。庫工程,用來存放工具類 base類 自定義控制項以及第三方框架作為專案中的庫來使用。模組工程,用來存放邏輯 我們專案的引用關係與專案規劃大致如下 如果不知道...

iOS 元件化架構及建立私有專案元件

一 元件化架構的產生 二 專案元件化 專案元件化就是將專案中的各個模組按照基礎元件 功能元件 業務元件等劃分成乙個個單獨的模組,以使的各個模組間實現低耦合,可以單獨開發 測試 組合執行。三 專案元件化好處 1.業務劃分更佳清晰,新人接手更佳容易,可以按元件分配開發任務。2.專案可維護性更強,提高開發...

vue元件化專案應用的問題

最近一周都在回顧年前的專案,其中的乙個用vue做的專案,發現了很多可以優化的問題 元件化的拆分,記得之前剛入職工作的時候,部門老大給我們布置了乙個任務,就是拆分頁面,當時覺得有什麼還拆分的,不就是直接寫?來到北京之後,恰巧是公司業務比較急的時候,拿到需求之後,看到頁面就直接去寫了,因為業務的需要,當...