conan使用(一)--安裝和應用


1. 安裝conan

使用pip命令安裝conan,如果沒有安裝pip的,可以先安裝好python后,再安裝pip。

pip install conan

之后就可以使用conan命令。(注意Linux下需要使用sudo提升權限)

2. 管理遠程庫

默認conan會添加一個遠程庫:conan-center:
image.png

我們可以使用search選項,搜索包:

conan search glog --remote conan-center # 在conan-center遠程庫中搜索glog庫

image.png

我們也可以添加一個遠程庫:

conan remote add conan-transit https://conan-transit.bintray.com

image.png

3. 使用conan管理依賴包

這里就以使用glog作為我們的一個例子。
安裝我們需要的包命令是:

conan install glog/0.4.0@bincrafters/stable -r conan-center
conan remove glog/0.4.0@bincrafters/stable

glog/0.4.0@bincrafters/stable 就是表示一個包,很明顯,它的命名很有規則:包名/版本@用戶/渠道 .

不過這里我們並不需要手動先去安裝,可以先寫一個conanfile.txt:

[requires]
glog/0.4.0@bincrafters/stable

[generators]
cmake

然后執行:

conan install .

它就會去安裝我們指定的包,如果本地沒有這個包,那么它就會去我們之前配置好的遠程服務器上去查找。執行完install后,會在當前目錄生成以下三個文件:
image.png
其中:

  • conaninfo.txt這個文件可以判斷包的詳細信息,包括編譯器信息、系統架構等;
  • conanbuildinfo.cmake這個文件是給cmake引入的,即告訴cmake依賴關系,比如頭文件的引用路徑,庫的引用路徑,庫的鏈接等信息;
  • conanbuildinfo.txt這個文件方便我們閱讀上面的信息。

接下來就是先編寫我們的源代碼,main.cpp:


#include <glog/logging.h>

int main(int argc, char* argv[])
{
        google::InitGoogleLogging(argv[0]);
		FLAGS_alsologtostderr = true;
        LOG(INFO) << "------conan test-----------------";

        google::ShutdownGoogleLogging();
        return 0;
}

然后編寫CmakeLists.txt文件,將conanbuildinfo.cmake配置進去(注意相對路徑):

project(ConanTest)
cmake_minimum_required(VERSION 2.8.12)

include(${PROJECT_SOURCE_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})

然后執行cmake和make,完成編譯后,即可執行:
image.png

此外需注意的是,默認conan都是采用靜態庫版本的包,如果想要采用動態庫,只需要在conanfile.txt文件中加上以下內容:

[options]
glog:shared=True

image.png

如果想把dll等動態庫拷貝到當前工程下,那么還可以在conanfile.txt文件使用import配置

[imports]
bin, *.dll -> ./bin # Copies all dll files from packages bin folder to my local "bin" folder
lib, *.dylib* -> ./bin # Copies all dylib files from packages lib folder to my local "bin" folder

conanfile.txt的更多使用細節,可以參考:https://docs.conan.io/en/latest/reference/conanfile_txt.html。

另一個需要注意的點時,選擇目標包是x86還是x64,可以通過兩種方式(默認是x86_64):

  • conan install . -s arch=x86 -s arch_build=x86
  • conan install . --profile=myproject
    profile文件可以定義[settings]字段:
[settings]
#setting=value
os_build=Linux
arch_build=x86_64
os=Macos
arch=x86_64
compiler=clang
compiler.version=3.5
compiler.libcxx=libstdc++11
build_type=Release
[options]
#MyLib:shared=True
*:shared=True
[env]
#env_var=value
CC=/usr/bin/clang
CXX=/usr/bin/clang++
[build_requires]
#tool/version@user/channel

那么我們可以自己創建一個profeile文件,定義上述設置,然后在install的時候指定配置文件即可。
補充:settings里的選項都可以直接使用 -s XX=XX 在命令中直接指定,在options你的選項都可以使用 -o XX=XX來進行指定。

有了conan管理包,復雜的C/C++工程也能像golang、python那樣很方便的遷移編譯。相比nuget,它對跨平台的支持更好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM