VS2017 + Win10 下的 OpenCPN 5.0.0 編譯過程小結

本文介紹了OpenCPN 5.0.0版本的編譯過程,官方網站給出了一個流程,但是親測後發現還是有一些小坑,官方給出的命令行操作由於網絡(可能需要科學上網)不一定暢通,導致難以下載成功,在此把本人成功配置並編譯的過程分享出來,讓需要的人少走彎路。

目標

基於VS2017(對應VC15)編譯最新版OpenCPN的 debugrealease版本。

參考資料

  1. OpenCPN Github
  2. OpenCPN Manuals - Compiling on Windows
  3. OpenCPN Manuals - Compile 2015 VS Community Workflow

下載彙總

  1. Visual Studio Community 2017 (version 15.9)
  2. Git
  3. CMake
  4. POedit
  5. NSIS
  6. 7-Zip
  7. OpenCPN 預編譯Windows依賴 - OpenCPN_buildwin-4.99a.7z
  8. 界面庫源碼 - wxWidgets 3.1.2.zip
  9. 編譯 Debug 版本的 batch 複製命令 - copyfiles.bat.doc
  10. 資源彙總

有些資源下載的很慢,如果實在下載不到,可以用我提供的,源碼文件太大超過 440M 只能分成兩個資源,每個只要2分,賺個辛苦錢我也好下點資源,謝謝支持。


編譯流程

  1. 安裝VS2017,這一步就不展開了,OpenCPN 官網提到如下要求,注意勾選即可。

Install and select the workload Desktop development with C++ and include component Windows XP support for C++.
Also include the appropriate Windows x SDK component. Generally install the most current version, Windows 10 preferred.

  1. 必須】安裝 GitCMake, 對應官網都有安裝包,找最新的版本下載來安裝就好了。
  2. 必須】安裝並 POedit, 配置系統環境變量,在PATH中添加

C:\Program Files (x86)\Poedit\GettextTools\bin

  1. 非必須】安裝NSIS, OpenCPN提供的網址裏的 download 指向錯誤,在 sourceforge上找到了下載鏈接,見下載彙總,這個主要用於製作安裝包的,如果只是用調試版,暫時用不上這個。
  2. 不重要】安裝 7-Zip, 我是把 32 位和 64 位的都安裝了,這個主要是解壓下載彙總中的預編譯依賴壓縮包用的,有其他常用的解壓工具的話也不是很需要這個。
  3. 下載 wxWidgets 3.1.2源碼並編譯。
  • 【注意】雖然wxWidgets官網提供了 Win下預編譯好的庫,但是隻有 release版本,我們這裏直接從源碼編譯debugrelease版本的庫,下載官方的最新源碼壓縮包,這裏一定注意,下載這個Zip文件。在這裏插入圖片描述利用git clone和或下載下面的source code中都沒有submodule,雖然利用gitgit submodule update命令理論上可以下載到這些子模塊,但是親測由於網絡原因幾乎無法成功下載,所以還是老實的去上面這裏下載。下載Zip完成後,注意有些教程可能說到進入\wxWidgets-3.1.2\build\msw然後找到wx_vc15.sln的工程打開後生成庫,我在這裏走了彎路,經過測試,這麼做會報錯,並且不好解決,還是嚴格按照官網的配置流程來,打開x86 Native Tools Command Prompt for VS 2017後輸入如下命令:

cd xx/wxWidgets-3.1.2/build/msw//改到自己的路徑
nmake /f makefile.vc BUILD=release SHARED=1 CXXFLAGS=/D_USING_V141_SDK71_ CFLAGS=/D_USING_V141_SDK71_ LDFLAGS=/SUBSYSTEM:WINDOWS,5.01
nmake /f makefile.vc BUILD=debug SHARED=1 CXXFLAGS=/D_USING_V141_SDK71_ CFLAGS=/D_USING_V141_SDK71_ LDFLAGS=/SUBSYSTEM:WINDOWS,5.01

  • 【提示】用Win+S彈出的搜索框中輸入x86 Native後就會很容易找到x86 Native Tools Command Prompt for VS 2017
  • 隨着一陣嘩嘩的輸出,release版本的編譯完了,按一下回車,繼續debug的編譯。編譯完了後在\wxWidgets-3.1.2\lib\vcdll就能看到debugrelease版本的編譯好的庫。
  • 重要】編譯結束後,設置系統環境變量 wxWIDGETS_ROOT_DIR路徑爲 wxWidgets源碼的頂級目錄。 在這裏插入圖片描述
  1. 下載 OpenCPN源碼, 在你想放置OpenCPN源碼的文件夾下,右鍵選擇Git Bash Here, 複製下面的命令後回車就可以直接從github克隆到本地了:

git clone https://github.com/OpenCPN/OpenCPN

  1. 下載 預編譯Windows依賴 - OpenCPN_buildwin-4.99a.7z,然後解壓到\xx\OpenCPN\buildwin也就是複製到你 cloneOpenCPN源碼目錄中的 buildwin目錄下。
  2. OpenCPN編譯之Release版本的編譯
  • 首先配置工程,打開x86 Native Tools Command Prompt for VS 2017進入\xx\OpenCPN\路徑後輸入如下命令:

cd xx\OpenCPN\//還是一樣,換成你自己的路徑
mkdir build
cd build
cmake -G "Visual Studio 15 2017" -T v141_xp ..

  • 完成後build中就生成了OpenCPN.sln工程文件,官網的編譯命令如下:

cmake --build .
cmake --build . --config release
cmake --build . --config release --target package

  • 如果不採用命令行編譯,也可以直接打開OpenCPN.sln工程進行編譯,因爲這裏大概率會報錯,用VS編譯比較方便定位錯誤,我建議直接打開VS工程編譯。打開 \build\OpenCPN.sln工程文件我們來跑一跑OpenCPN看看能不能運行起來。在這裏插入圖片描述
  • 打開工程後,把opencpn右鍵設置爲啓動項目,我這裏先選擇的是Release(Win32)然後點擊運行吧。不出所料,果然出現了一個錯誤,我們定位到報錯行:

xx\OpenCPN\src\options.cpp(8867): error C2001: 常量中有換行符

在這裏插入圖片描述

  • 看起來是中文字符的問題,查了查資料發現改起來好像比較麻煩,這個字體應該表示繁體中文,我們先把它隨便改成英文試一試,例如“正體字”改成“zhengti”(很隨意的不要糾結),繼續點擊運行,看看還有沒有錯誤沒有解決。
  • 剛纔字體的問題暫時解決了,但是出現了新的問題:在這裏插入圖片描述
  • 這個就比較常見了,點擊運行的時候提示缺少一些dll,一般是沒有加入系統環境變量或者複製到對應的DebugRelease文件夾下,提示缺少一些wx相關的dll,那麼大概率就是我們之前的編譯好的界面庫沒有加入系統環境變量,雖然我們之前設置了 wxWIDGETS_ROOT_DIR這一變量,但是我們的dll文件在wxWidgets-3.1.2\lib\vc_dll\路徑下,所以我們把這個路徑加入系統環境變量PATH中。
  • 仔細檢查官網步驟,其實還有一步配置:下載 Copyfiles.bat.doc(見下載彙總)並刪去後綴名 .doc移動到\xx\OpenCPN\下面後執行copyfiles.bat(這步不做可能還是會缺幾個dll)。
  • 做完上面兩步,重啓一下VS2017,再打開OpenCPN.sln,直接執行,果然成功了。在這裏插入圖片描述
  1. OpenCPN編譯之Debug版本的編譯
  • OpenCPN.sln工程中的項目改成Debug(Win32)運行一下,一切都運行正常,那麼試一下加斷點吧:在這裏插入圖片描述
  • 也沒有出現什麼問題,至此DebugRelease版本的OpenCPN都編譯並測試完成了。

小結

  1. 其實,官網文檔已經夠用了,我這裏大多也只是翻譯了一遍,只要嚴格按照官網提供的步驟,一步一步進行是肯定能夠編譯成功的。
  2. 唯一出現的一點小問題就是最後缺少dll的問題,這個小問題憑藉我們一般編譯項目的經驗就可以解決。
  3. 目前遺留的小問題是中文字符的問題,也是個麻煩事,暫時沒去解決。
  4. 特別需要注意的是,如果對某一模塊有指定版本,那麼官網都給出了具體的版本號,比如界面庫是3.1.2,在不熟練的情況下,第一次編譯最好嚴格按照官網說明的版本進行,可能會少走彎路。
  5. 最後我把中間需要用到的安裝包和庫都放在一起(除了VS2017GitCMake),如果實在下不到,可以採用我提供的這些文件,不過,自己試一試走一遍流程,可能印象會更深刻。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章