目錄前言一、前期准備1.1 安裝Openssl1.2 下載Poco的源碼二、編譯源碼三、報錯3.1 Foundation_vs160找不到Windows SDK版本8.1
3.1.1 報錯原因3.1.2 解決方式3.2 缺少openssl路徑3.2.1 報錯原因3.2.2 解決方法3.3 找不到mysql.h3.3.1 報錯原因3.3.2 解決方法四、編譯完成總結前言
上一篇文章,咱們介紹了Poco庫有多牛逼,當然接下來就是要把它用起來。工欲善其事必先利其器,想讓C++發揮更好的作用,就需要把一個合適的框架跟庫給用起來。
因為Poco官網有編譯好的win64的庫文件,Linux的32跟64位的庫,所以這裏我演示如何編譯出win32的庫文件
環境:win10
工具:VS2019
目標:編譯出win32的Poco庫
一、前期准備
1.1 安裝Openssl
要安裝openssl,不知道怎麼安裝的,可以參考我的文章
https://blog.csdn.net/zhh763984017/article/details/113486710
1.2 下載Poco的源碼
git clone https://github.com/pocoproject/poco.git
二、編譯源碼
打開VS2019,進入命令行
進入poco源代碼所在路徑,我的路徑是在F:C++_workhttppoco
修改buildwin.cmd文件,增加了幾行
增加的內容如下:
set OPENSSL_DIR=C:Program FilesOpenSSL-Win32
set OPENSSL_INCLUDE=C:Program Files (x86)OpenSSL-Win32include
set OPENSSL_LIB=C:Program Files (x86)OpenSSL-Win32lib;C:Program Files (x86)OpenSSL-Win32libVC;C:Program Files (x86)OpenSSL-Win32libVCstatic
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
set LIB=%LIB%;%OPENSSL_LIB%
這裏的OPENSSL_DIR配置的路徑就是你openssl安裝的路徑 OPENSSL_INCLUDE是你openssl安裝的路徑下的include文件夾 OPENSSL_LIB是你openssl安裝的路徑下的lib文件夾
修改完,如下圖所示
在VS2019的命令行執行.uild_vs160.cmd
三、報錯
3.1 Foundation_vs160找不到Windows SDK版本8.1
3.1.1 報錯原因
執行上面腳本命令後,報錯說Foundation_vs160工程找不到相關的SDK。這是源代碼的SDK是win8.1平台的,而我的環境是win10,用的SDK是win10的SDK。
3.1.2 解決方式
1.進入源碼目錄
2.打開Foundation_vs160.sln,右鍵屬性,修改SDK版本,然後應用,這4個項目都要做同樣的修改。如下圖
配置完,關閉工程。記得保存
3.2 缺少openssl路徑
3.2.1 報錯原因
如果沒有按照我上面所說的,沒有配置openssl路徑,會報錯:無法打開包括文件“openssl/opensslv.h”: No such file or directory
報錯如圖所示
3.2.2 解決方法
修改buildwin.cmd文件,如我上述步驟,把openssl的頭文件路徑設置好。
3.3 找不到mysql.h
3.3.1 報錯原因
找不到mysql.h,報錯。如果有需要編譯mysql模塊的話,就需要電腦先安裝Mysql數據庫,並且配置相關路徑。後面我會單獨出一期來講解這個模塊的編譯
3.3.2 解決方法
目前由於我們不需要用到mysql模塊,我們可以不編譯該模塊
我們在poco源代碼目錄下找到“components”文件,然後修改,刪掉其中不需要用到的模塊。比如我這裏的用不到ODBC、MYSQL、PostgreSQL的庫,就可以先行刪除,然後再次編譯
四、編譯完成
解決上述問題之後,再次運行.uild_vs160.cmd就可以正常編譯咯~
總結
打完收工,以上就是Poco win32庫的編譯過程,是不是很簡單叻,接下來,會介紹如何新建一個Poco庫的VS2019工程。有了Poco庫,媽媽再也不用擔心我用C++用得頭禿了。