1. 程式人生 > >從零開始編譯Poco C++和VS2015環境配置

從零開始編譯Poco C++和VS2015環境配置

Poco C++是一個C++的開源框架,詳細介紹可以問百度介紹更詳細,這裡我就記錄下我從零編譯poco-1.9.0和配置 VS2015的環境,以備不時之需。

步驟:

一、安裝cmake;
二、編譯poco-1.9.0;
三、將編譯後的poco-1.9.0配置到VS2015的專案中;
四、示例簡單示例。

安裝cmake

我的電腦環境:
win7 64位;
cmake-3.12.1-win64-x64(官網下載:點選我下載cmake)。
安裝cmake按常規安裝即可,但是記得勾選:
這裡寫圖片描述
這個主要是為了防止電腦登入其他使用者沒有cmake,建議把CMake加到系統PATH中。其他的下一步即可。
關於cmka GUI和命令列的用法(下面會配置PocoC++使用命令列用法),也可以自行百度。

編譯Poco C++

前提條件:
1)Poco C++原始碼(官網下載:點選我下載);
2)已經安裝VS2015;
3)已經安裝cmake。

編譯poco c++(poco-1.9.0.zip、Visual Studio 2015)
1)用windows的命令列轉到poco-1.9.0資料夾,即原始碼目錄。
2)執行下面命令(命令最後一句的”..”切記不可遺漏了哦):

mkdir cmake_build_x64
cd cmake_build_x64
cmake -G “Visual Studio 14 2015 Win64” ..

3)然後進入make_build_x64 資料夾裡面,用 Visual Studio 2015 開啟 Poco.sln,用VS編譯 POCO C++ Libraries 的動態連結庫 ,建議同時編譯debug和release版本(跟普通的編譯VS工程一樣,即按快捷鍵F7即可),至此PocoC++編譯完成了,在目錄cmake_build_x64資料夾下面的的 bin、lib 子目錄中,就是我們最終得到的動態連結庫等檔案。

poco-1.9.0配置到VS2015的專案中

1)在原始碼目錄下新建v1.9.0_compact_MSVC資料夾,如我的:

D:\poco\poco-1.9.0\v1.9.0_compact_MSVC

然後設定系統環境變數指向POCO_ROOT,即點選“”我的電腦“–》右擊“屬性”–》高階系統設定–》環境變數–》點選系統環境變數下面的“新建”按鈕,填寫:
這裡寫圖片描述
2)將所有的 include下面資料夾集中在 %POCO_ROOT%\include 目錄中,如我的D:\poco\poco-1.9.0\Foundation\include\Poco檔案下面的東西拷貝D:\poco\poco-1.9.0\v1.9.0_compact_MSVC\include\Poco下面。同理D:\poco\poco-1.9.0\Encodings\include\Poco同樣處理(你會留意到有Encodings Foundation JSON Net Util XML這些資料夾下面\include\Poco下面的檔案及資料夾需要這樣處理)。這樣做主要是為包含標頭檔案方便些,最終處理完如下圖所示:
這裡寫圖片描述


3)在v1.9.0_compact_MSVC資料夾下面建立build/x64資料夾,將編譯得到的 bin、lib 資料夾都收集到build/x64下,如下圖:
這裡寫圖片描述
4)在VS工程連線動態庫和標頭檔案:
a.右擊你的VS工程,點選“屬性”–》C/C++–》常規–》新增包含目錄,輸入:

$(POCO_ROOT)\include

b.點選“屬性”–》聯結器–》附加庫目錄,輸入:

D:\poco\poco-1.9.0\v1.9.0_compact_MSVC\build\x64\lib\Debug
D:\poco\poco-1.9.0\v1.9.0_compact_MSVC\build\x64\bin\Debug

c.點選“屬性”–》聯結器–》輸入–》附加依賴項。
針對Debug,輸入:

PocoEncodingsd.lib
PocoFoundationd.lib
PocoJSONd.lib
PocoNetd.lib
PocoUtild.lib

針對Release輸入:

PocoEncodings.lib
PocoFoundation.lib
PocoJSON.lib
PocoNet.lib
PocoUtil.lib
PocoXML.lib

4)將對應庫配置到編譯輸出目錄。“屬性”–》生成事件–》命名行,輸入:

copy “(POCOROOT)\build$(Platform)\bin$(Configuration)\*."(TargetDir)

pooc c++使用簡單示例程式碼:

#include <iostream>
#include "Poco\Timer.h"
#include "Poco\Thread.h"
using Poco::Timer;
using Poco::Thread;
using Poco::TimerCallback;
using namespace std;

class TimerExample
{
public:
    void onTimer(Poco::Timer &timer)
    {
        cout << "func : " << __FUNCTION__ << endl;
    }
};

int main(int argc, char** argv)
{
    TimerExample te;
    Timer timer(2000, 1000);
    timer.start(TimerCallback<TimerExample>(te, &TimerExample::onTimer));
    Thread::sleep(5000);
    timer.stop();
    return 0;
}

輸出:
這裡寫圖片描述

已上是我今天編譯poco c++、配置VS2015工程環境、簡單使用的總結筆記,如有不當之處,還請大俠多多指教哦~