C++包管理工具conan的使用

C++包管理工具conan的使用

來自專欄人工智慧從入門到逆天殺神(FutureAI)4 人贊了文章

C++ 的依賴管理一直依賴頗為詬病,這也是為什麼C++很難像其他語言一樣受歡迎的原因,為了提高效率一些必要吃的操作是需要採取的,connan就是一個為此而生的包管理工具。以一個十分簡單的例子來解釋一下這個玩意如何使用的。

  1. 創建一個C++源文件,直接導入庫的名字和頭文件

就像這樣的timer.cpp :

#include "Poco/Timer.h"#include "Poco/Thread.h"#include "Poco/Stopwatch.h"#include <iostream>using Poco::Stopwatch;using Poco::Thread;using Poco::Timer;using Poco::TimerCallback;class TimerExample{ public: TimerExample() { _sw.start(); } void onTimer(Timer &timer) { std::cout << "Callback called after " << _sw.elapsed() / 1000 << " milliseconds." << std::endl; } private: Stopwatch _sw;};int main(int argc, char **argv){ TimerExample example; Timer timer(250, 500); timer.start(TimerCallback<TimerExample>(example, &TimerExample::onTimer)); Thread::sleep(5000); timer.stop(); return 0;}

這裡用到了一個Poco庫。這個庫講道理我不知道什麼鬼,也不知道幹嘛的,這個時候就可以去conan的庫裡面搜索一下。

對了,conan的安裝十分簡單, pip install conan就可以了。 我們用 conan search poco 來試一下:

Existing package recipes:Poco/1.9.0@pocoproject/stable

就可以得到這個庫的最新穩定版本。朋友們這個就是非常有用了,我們此時在做一些探索,搜索一下boost看看??這個庫相信很多人會在項目中使用到,但是每次如果在一台新的機器上使用你需要配黃靜或者單獨的安裝個人覺得十分的麻煩。好像並沒有boost這樣的庫。。。

  1. 添加CMakeLists.txt的配置

接著得添加一下cmake的配置:

project(FoundationTimer) cmake_minimum_required(VERSION 2.8.12) add_definitions("-std=c++11") include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() add_executable(timer timer.cpp) target_link_libraries(timer ${CONAN_LIBS})

然後編譯:

mkdir buildcd build# must doconan install ..(win)$ cmake .. -G "Visual Studio 15 Win64"$ cmake --build . --config Release

這裡需要注意一下,這裡面cmake的指令都帶有一些標誌位,這些標誌位很重要的。其中如果是windows下面,最好添加win64的制定,否則後面會默認採用win32的cmake配置,然後編譯的時候就會與你64位的操作系統不兼容。

另外,一定要加上Release的標誌位,因為現在都是基於Release在做。

好了,通過上面的配置就可以非常自動的添加第三方庫了。

日後,許多C++的庫都應當採用conan的依賴標準進行配置,這樣使用者可以非常方便的進行庫的包含,而不需要關注各種路徑,環境變數,亂七八糟的include和靜動態的連接文件等。

推薦閱讀:

神機妙算一掌經-唐-張遂
用C++看這個規律1/2 2/3 3/5 5/8 8/13一直寫到第20個的值?
C++學完了,如果我要做軟體開發,繼續學什麼?
C++中使用模板獲取數組長度時,數組名前的那個&是什麼意思呢?

TAG:GTDGettingThingsDone | C | AI技術 |