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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

conan入门(六):conanfile.txt conanfile.py的区别

發布時間:2024/8/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 conan入门(六):conanfile.txt conanfile.py的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

conan conanfile.txt conanfile.py的區別

在之前的博客《conan入門(四):conan 引用第三方庫示例》中我們以cJSON為例說明了如何在項目中引用一個conan 包。

conanfile.txt

在這篇博客中我們為了引用cjson/1.7.13庫,創建了一個conanfile.txt文件用于指定json_test.c程序的依賴庫cjson

[requires] cjson/1.7.13[generators] cmake

關于conanfile.txt的詳細說明參見Conan官方文檔《conanfile.txt》和《Installing dependencies》

conanafile.txt還有一些別的字段:options,imports。。。

可以理解這個conanfile.txt的作用就是定義當前項目的conan配置。conan 的install,create,export,export-pkg,upload...等命令都會用依據這個配置文件來執行。

conanfile.py

在《conan入門(三):上傳預編譯的庫(artifact)》中,我們用到了create new創建一個新的包:

使用conan new命令創建基本配置:

$ cd cjson.build/release/ $ conan new cjson/1.7.15 --bare File saved: conanfile.py

conan new會在當前文件夾下生成conanfile.py,

from conans import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layoutclass HelloConan(ConanFile):name = "hello"version = "0.1"# Optional metadatalicense = "<Put the package license here>"author = "<Put your name here> <And your email here>"url = "<Package recipe repository url here, for issues about the package>"description = "<Description of Hello here>"topics = ("<Put some tag here>", "<here>", "<and here>")# Binary configurationsettings = "os", "compiler", "build_type", "arch"options = {"shared": [True, False], "fPIC": [True, False]}default_options = {"shared": False, "fPIC": True}# Sources are located in the same place as this recipe, copy them to the recipeexports_sources = "CMakeLists.txt", "src/*"def config_options(self):if self.settings.os == "Windows":del self.options.fPICdef layout(self):cmake_layout(self)def generate(self):tc = CMakeToolchain(self)tc.generate()def build(self):cmake = CMake(self)cmake.configure()cmake.build()def package(self):cmake = CMake(self)cmake.install()def package_info(self):self.cpp_info.libs = ["hello"]

這個conanfile.py也是用于定義當前項目的conan配置,它以python 類的方式定義了一個conan包的所有配置,顯然相對于conanfile.txt ,這個python腳本的內容要豐富許多,靈活許多(因為可以使用方法定義邏輯)。

difference

都是用于conan配置,conanfile.txt和conanfile.py有何區別?為何要設計兩種配置定義方式?如果一個項目中存在兩個定義文件文件會怎么樣?

這些問題把剛conan入門的我搞糊涂了。

谷歌上搜索了一下,發現有人與我有同樣的問題問了conan官方:《Mix conanfile.py and conanfile.txt in the same project #307》

以下是作者的回復:

conanfile.txt是一種簡單的conan配置定義方式,并不是每個程序員都懂python腳本(我就不懂),對于開發人員如果只是作為一個消費者角色(consumer),想使用conan簡化第三方庫的引用方式,在大多數情況下,一般只要正確設置requires,generators,conan就可以正常工作,那么首選使用conanfile.txt這種配置文件定義方式,因為它是更加直觀易懂的。

如果開發人員要作為生產者角色(producer),把自己的項目也封裝成conan包上傳到conan服務器供第三方使用,conanfile.txt是不能滿足要求的,必須使用全能的confile.py腳本來定義包的配置,事實上conan在分發包時就是基于python腳本的靈活性通過conanfile.py來定義包的全部配置的。所以當我們執行conan new命令創建一個新的conan配置時,自動生成的是conanfile.py腳本。

所以一個項目中是不允許conanfile.txt和conanfile.py共存的(都來是包定義,到底聽誰的呢),執行conan命令會報錯。

conan系列文章

《conan入門(一):conan 及 JFrog Artifactory 安裝》
《conan入門(二):conan 服務配置-密碼管理及策略》
《conan入門(三):上傳預編譯的庫(artifact)》
《conan入門(四):conan 引用第三方庫示例》
《conan入門(五):conan 交叉編譯引用第三方庫示例》
《conan入門(六):conanfile.txt conanfile.py的區別》
《conan入門(七):將自己的項目生成conan包》
《conan入門(八):交叉編譯自己的conan包項目》
《conan入門(九):NDK交叉編譯自己的conan包項目塈profile的定義》
《conan入門(十):Windows下Android NDK交叉編譯Boost》
《conan入門(十一):Linux下Android NDK交叉編譯Boost》
《conan入門(十二):Windows NDK 編譯 boost報錯:CMake was unable to find a build program … MinGW Makefile》
《conan入門(十三):conan info 命令的基本用法》
《conan入門(十四):conan new 命令的新特性–模板功能(–template)》
《conan入門(十五):AttributeError: ‘CMake‘ object has no attribute ‘definitions‘》
《conan入門(十六):profile template功能實現不同平臺下profile的統一》
《conan入門(十七):支持android NDK (armv7,armv8,x86,x86_64)交叉編譯的統一profile jinja2模板》
《conan入門(十八):Cannot recognize the Windows subsystem, install MSYS2/cygwin or specify a build_require》
《conan入門(十九):封裝第三方開源庫cpp_redis示例》
《conan入門(二十):封裝只包含頭文件(header_only)的庫示例》
《conan入門(二十一):解決MinGW編譯Openssl的編譯錯誤:crypto/dso/dso_win32.c》
《conan入門(二十二):編譯 openssl要求python 3.7以上版本》
《conan入門(二十三):Windows下MinGW編譯libcurl》
《conan入門(二十四):通過CONAN_DISABLE_CHECK_COMPILER禁用編譯器檢查》
《conan入門(二十五):imports將包安裝到本地項目或其他指定位置》

總結

以上是生活随笔為你收集整理的conan入门(六):conanfile.txt conanfile.py的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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