中文 域名的網(wǎng)站seo網(wǎng)站搭建是什么
一、Conan介紹
Conan 2.0 是專為 C 和 C++ 語言設(shè)計的 開源、去中心化、跨平臺包管理器,旨在幫助開發(fā)者創(chuàng)建、共享和管理原生二進(jìn)制文件。
支持以下特性:
- 系統(tǒng): Windows、Linux、macOS、FreeBSD、Solaris
- 架構(gòu): x86、x64、arm、arm64
- 構(gòu)建系統(tǒng): CMake、Visual Studio (MSBuild)、Autotools、Makefiles、Meson、SCons
- 編譯器: gcc、cl.exe、clang、apple-clang、intel
- 庫類型: static、shared
- 編譯類型: Debug、Release
Conan組成:
- Conan 客戶端:用于管理依賴、拉取或構(gòu)建二進(jìn)制包。
- conan_server:一個輕量級服務(wù)器,用于在本地或私有網(wǎng)絡(luò)中托管 Conan 包。
- JFrog Artifactory Community:是一個功能強(qiáng)大的包管理服務(wù)器,Conan 官方推薦用于托管 Conan 包。
- ConanCenter:是 Conan 官方維護(hù)的中央公共倉庫,存儲大量開源 C/C++ 庫的 Conan 包。
注意:Conan不存儲源碼,只記錄源碼下載地址
Conan 文檔地址:docs.conan.org.cn
二、Conan安裝
2.1 使用 pip 安裝(推薦)
通過pip安裝,方便安裝不同版本Conan和易于升級。
這里使用python的virtualenvs管理虛擬環(huán)境,先創(chuàng)建虛擬環(huán)境,再在虛擬環(huán)境中安裝Conan,并將Conan的安裝路徑添加環(huán)境變量中。
安裝流程:
-
安裝Python 3.12(Conan要求Python的版本必須大于等于3.6)
- Python 下載地址:www.python.org/downloads/windows
- 注意:修改Python的安裝路徑為D盤
-
安裝virtualenvs依賴,使用virtualenvs管理虛擬環(huán)境。
- virtualenvs依賴庫的幫助文檔:virtualenvwrapper-win
- 安裝virtualenvs:
pip install virtualenvwrapper-win
-
指定虛擬環(huán)境的安裝路徑(修改WORKON_HOME環(huán)境變量)
- 虛擬環(huán)境默認(rèn)安裝路徑是:
%USERPROFILE%\Envs
- 新建WORKON_HOME環(huán)境變量
- 虛擬環(huán)境默認(rèn)安裝路徑是:
-
創(chuàng)建Conan虛擬環(huán)境
- 創(chuàng)建虛擬環(huán)境:
mkvirtualenv --python=3.12.11 conan
(這里的conan
是虛擬環(huán)境的名稱) - 這里指定的Python版本
--python=3.12.11
,必須是系統(tǒng)已安裝的。 - 這是安裝后的虛擬環(huán)境
- 創(chuàng)建虛擬環(huán)境:
-
在虛擬環(huán)境中安裝Conan
- 進(jìn)入虛擬環(huán)境:
workon conan
(這里的conan
是虛擬環(huán)境的名稱) - 安裝Conan:
pip install conan
- 進(jìn)入虛擬環(huán)境:
-
將Conan的scripts添加到系統(tǒng)環(huán)境變量中,使在cmd等終端中能直接使用Conan
- 將虛擬環(huán)境的Scripts添加到環(huán)境變量中
- 啟動cmd,測試Conan是否能使用。
- 將虛擬環(huán)境的Scripts添加到環(huán)境變量中
-
升級Conan (慎用)
- 進(jìn)入虛擬環(huán)境:
workon conan
- 升級命令:
pip install conan --upgrade
- 進(jìn)入虛擬環(huán)境:
2.2 通過exe安裝
這種方式不要求安裝Python,可以直接安裝。
程序下載地址:conan.org.cn/downloads
三、Conan使用
3.2 小案例
項目結(jié)構(gòu):
.
├── conanfile.txt # 記錄項目 用到的依賴
├── CMakeLists.txt # cmake的配置文件
└── src└── main.c # 源碼
conanfile.txt文件內(nèi)容:
[requires] # 記錄依賴
zlib/1.2.11 # 依賴/版本號[generators] # 配置生成構(gòu)建系統(tǒng)文件
CMakeDeps # 生成Findxxx.cmake 用于查找依賴庫
CMakeToolchain # 生成conan_toolchain.cmake 配置工具鏈[layout]
cmake_layout # 標(biāo)準(zhǔn) CMake 布局
CMakeLists.txt文件內(nèi)容:
cmake_minimum_required(VERSION 3.15)
project(compressor C)# 包含 Conan 生成的工具鏈文件
include(${CMAKE_BINARY_DIR}/generators/conan_toolchain.cmake)# 查找依賴庫
find_package(ZLIB REQUIRED) add_executable(${PROJECT_NAME} src/main.c)
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)
main.c文件內(nèi)容:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>#include <zlib.h>int main(void) {char buffer_in [256] = {"Conan is a MIT-licensed, Open Source package"};char buffer_out [256] = {0};z_stream defstream;defstream.zalloc = Z_NULL;defstream.zfree = Z_NULL;defstream.opaque = Z_NULL;defstream.avail_in = (uInt) strlen(buffer_in);defstream.next_in = (Bytef *) buffer_in;defstream.avail_out = (uInt) sizeof(buffer_out);defstream.next_out = (Bytef *) buffer_out;deflateInit(&defstream, Z_BEST_COMPRESSION);deflate(&defstream, Z_FINISH);deflateEnd(&defstream);printf("Uncompressed size is: %lu\n", strlen(buffer_in));printf("Compressed size is: %lu\n", strlen(buffer_out));printf("ZLIB VERSION: %s\n", zlibVersion());return EXIT_SUCCESS;
}
生成Conan的配置文件(記系統(tǒng)、架構(gòu)、編譯器、庫類型、編譯類型等信息):
conan profile detect --force
生成的默認(rèn)配置default在:C:\Users\wujh\.conan2\profiles
目錄下。
C:\Users\wujh>conan profile show
Host profile:
[settings] # 目標(biāo)配置
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=192
os=WindowsBuild profile:
[settings] # 編譯配置
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=192
os=Windows
安裝依賴:
conan install . --build=missing # 僅構(gòu)建本地緩存中缺少的包
構(gòu)建和編譯項目:
cd build
cmake ..
cmake --build . --config Release
注意:
- conan安裝依賴時,已生成工具鏈配置文件conan_toolchain.cmake,且在CMakeLists.txt文件已配置。
- 所以在配置cmake項目時,可以不用設(shè)置
-G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"
參考文章:使用 Conan 構(gòu)建簡單的 CMake 項目
3.1 常用命令
-
搜索本地或遠(yuǎn)程包:
conan search zlib/* -r=conancenter
- 在線搜索:conancenter
-
生成Conan的配置文件
- 生成默認(rèn)配置文件:
conan profile detect --force
- 指定配置文件名稱:
conan profile detect --name=mingw64
- 兩種常見的配置文件:
- 編譯器是VS2019的MSVC:
[settings] arch=x86_64 build_type=Release compiler=msvc compiler.cppstd=14 compiler.runtime=dynamic compiler.version=192 os=Windows
- 編譯器是MSYS2的MinGW64的GCC:
[settings] os=Windows arch=x86_64 compiler=gcc compiler.version=15.1 compiler.libcxx=libstdc++11 build_type=Release
- 編譯器是VS2019的MSVC:
- 配置文件關(guān)鍵配置字段說明
- ??os??:操作系統(tǒng)(Windows/Linux/macOS)
- ??arch??:架構(gòu)(x86_64/armv8)
- ??compiler??:編譯器類型(gcc/msvc/clang)
- ??compiler.version??:編譯器版本(如 13 對應(yīng) GCC 13)
- ??compiler.libcxx??:C++ 標(biāo)準(zhǔn)庫(libstdc++11/libc++)
- ??build_type??:構(gòu)建類型(Release/Debug)
- 生成默認(rèn)配置文件:
-
查看Conan的配置文件
- 查看所有可用的Profile:
conan profile list
- 查看默認(rèn)配置文件:
conan profile show
- 查看指定配置文件:
conan profile show -pr=mingw64
- 查看所有可用的Profile:
-
清理緩存
- 清理所有緩存:
conan cache clean "*"
- 清理指定庫的緩存:
conan remove ffmpeg/* -c
- 清理所有緩存:
-
安裝依賴并生成構(gòu)建系統(tǒng)文件:
- 使用默認(rèn)配置構(gòu)建
conan install . --build=missing
--build
參數(shù)missing
僅編譯不存在的包always
強(qiáng)制所有依賴從源碼構(gòu)建(忽略預(yù)編譯包)never
禁用所有的源碼構(gòu)建,只使用預(yù)編譯二進(jìn)制包。[pattern]
通配符,指定報名進(jìn)行源碼構(gòu)建 如--build=zlib*
僅構(gòu)建zlib及其依賴。outdated
當(dāng)二進(jìn)制包過期時重構(gòu)cascade
當(dāng)某個包被構(gòu)建時,級聯(lián)構(gòu)建其所有依賴。
- 指定編譯文件
conan install . --build=missing --profile:host=mingw64 --profile:build=mingw64
--profile:host=mingw64
指定目標(biāo)的配置文件-profile:build=mingw64
指定構(gòu)建的配置文件
- 安裝后的依賴庫位置:
- 使用默認(rèn)配置構(gòu)建
3.2 conanfile.txt常見參數(shù)
(1) [requires] 聲明項目的依賴庫
[requires]
poco/1.9.4 # 指定使用 POCO 庫的 1.9.4 版本。
zlib/1.2.11 # 指定使用 zlib 庫的 1.2.11 版本。
boost/[>=1.78.0 <1.80.0] # 支持版本范圍控制,指定 Boost 庫的版本范圍(1.78.0 到 1.79.x)。
(2)[options] 為依賴包指定構(gòu)建選項
[options]
poco/*:shared=True # 指定 POCO 庫構(gòu)建為共享庫(.dll 或 .so)
zlib/*:shared=False # 指定 zlib 庫構(gòu)建為靜態(tài)庫(.lib 或 .a)
(3)[generators] 指定 Conan 生成的構(gòu)建系統(tǒng)集成文件
[generators]
CMakeDeps # 生成 CMake 所需的依賴信息文件(如 poco-config.cmake)
CMakeToolchain # 生成 CMake 工具鏈文件,配置編譯器和構(gòu)建設(shè)置
常見生成器:
CMakeDeps
:為 CMake 項目生成依賴配置文件(如 xxx-config.cmake 或 Findxxx.cmake),允許 CMake 通過 find_package() 查找依賴。CMakeToolchain
:生成 CMake 工具鏈文件(conan_toolchain.cmake),用于配置 CMake 的編譯器、構(gòu)建類型和其他構(gòu)建設(shè)置。MSBuildDeps
:為 Visual Studio 項目生成 MSBuild 屬性文件(.props 文件),將依賴信息集成到 MSBuild 系統(tǒng)中。XcodeDeps
:為 Xcode 項目生成依賴配置,集成到 macOS/iOS 的 Xcode 構(gòu)建系統(tǒng)中。pkg_config
:為每個依賴生成 pkg-config 文件(.pc 文件),供支持 pkg-config 的構(gòu)建系統(tǒng)(如 Autotools、Make)使用。
如何選擇生成器
- CMake項目 推薦使用 CMakeDeps + CMakeToolchain。
- Visual Studio項目:使用 MSBuildDeps。
- Xcode項目 XcodeDeps。
- Linux/Autotools項目:使用 pkg_config。
(4) [layout] 定義項目的目錄結(jié)構(gòu)
[layout]
cmake_layout # 標(biāo)準(zhǔn) CMake 布局
(5)[tool_requires] 聲明構(gòu)建項目所需的工具依賴
[tool_requires]
cmake/3.24.0 # 指定使用 CMake 3.24.0 作為構(gòu)建工具。
ninja/1.10.2 # 指定使用 Ninja 1.10.2 作為構(gòu)建系統(tǒng)。
注意:這些工具只是作為項目構(gòu)建和編譯時使用,在構(gòu)建和安裝這些工具時沒有使用。