跳到主要內容

Building Wt with Visual Studio 2012 on Windows 8 x64 PC

安裝 Wt 花了許多時間,主要的問題是「在 cmake configure 時,會出現如下圖錯誤的訊息」,導致我一直認為這種問題,在按下「 Generate 」鍵之後,不會產出 Visual Studio Project 相關的檔案。因此,上網找了解決方式,依照這個解決方式將 mspdb110.dll

copy  C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mspdb110.dll
into  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin or C:\Windows\System

這是不需要的,因為這個錯誤的動作,導致後續的 Compile 無法完成。而發現這個問題是來自:在清除 wt build 目錄之後,重新 cmake wt project 時,會產生
The C compiler "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/cl.exe" is not able to compile a simple test program.
由於之前都沒有這種現象的發生,測試了幾台電腦以後,出現相同的錯誤現象,才開始懷疑可能是將 mspdb110.dll copy into C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin or C:\Windows\System 所導致的錯誤。


果不其然,真的是 copy mspdb110.dll into C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin or C:\Windows\System 所產生的問題。

所以,結論是:「不可以這樣做。如果在 Cmake 按下 Configure 時,出現上圖的錯誤訊息,不需要理會它,依然可以產生 vs 的 project 檔。」

首先說明我目前系統的環境及使用軟體的版本,接著再說明整個安裝的過程。目前所使用的作業系統是:
  •  x64 bits Windows 8 的系統
  • Visual Studio 2012 for Desktop
  • CMake 2.8.10.2 版本
下載的軟體及版本為(僅提供安裝開發環境的所需軟體):
  • boost 1.53
  • wt-3.3.0-rc4
下載的 source code 都解壓縮到 d:\porject 目錄之下

 安裝的步驟:[1]
  • 安裝 boost:
  1. 解壓縮 source code 到 d:\projects\boost_1_53_0
  2. cd d:\projects\boost_1_53_0 , 執行 bootstrap.bat
  3. 執行 b2.exe install --prefix=d:\library\boost agdress-mode=64(Compiling to 64-bits) --build-type=complete --with-mpi  (complete, so it also builds the dll's)
  4. copy include, lib 目錄下的檔案到 d:\libraries 目錄中
  • Configure Wt
  1. 執行 cmake-gui,指定 
    • Where is source code: D:/project/wt-3.3.0-rc4
    • Where is to build binaries: D:/project/wt-3.3.0-rc4/build <- 自行輸入 build
    • Ungrouped Entries -- MULTI_THREADED : 打勾
    • Ungrouped Entries -- SHARED_LIBS : 打勾
    • Boost -- Boost_INCLUDE_DIR : d\libraries\include
    • Boost -- Boost_LIB_DIR : d\libraries\lib
    • Cmake -- CMAKE_INSTALL_PREFIX : D:\libraries\wt
    • INSTALL -- INSTALL_EXAMPLES : 打勾
    • INSTALL -- INSTALL_RESOURCES : 打勾
  2. 按下「Configure」按鈕,會出現如上圖的錯誤訊息以及紅色的 High Light,不需要管它,然後再按一次 「Configure」按鈕
  3. 按下「Generate」按鈕
  •  Building Wt
  1. 開啟 c:\project\wt-3.3.0-rc4\build 目錄中 WT.sln 的 project
  2. 使用 Visual Studio Selector 選擇 Visual Studio for Desktop
  3. Build 時產生最小 size 的 library : 在 Wt project 中按下右鍵,選 Properties 會出現下圖的畫面,依照下圖將 wt, wtdbo, wtdbosqlite3, wthttp, hello.wt 設成最小的 size 
  4. Build wt, wthttp, hello.wt
  5. Build INSTALL

  • Testing Hello.wt
  1. 加入 Debugging 參數:在 Wt project 中按下右鍵,選 Properties 會出現下圖的畫面,在 Configuration Progerties > Debugging > Command Argument 中加入 --http-address=0.0.0.0 --http-port=8080 --deploy-path=/hello --docroot=. 
  2. 點選 DEBUG > Start Without Debugging or 在 Visual Studio 中按下 |> Local Windows Debugger 或出現  找不到 wt.dll, wthttpd.dll 檔案的錯誤訊息,需要將這兩個檔(C:\project\wt-3.3.0-rc4\build\src\http\Debug\wthttpd.dll and C:\project\wt-3.3.0-rc4\build\src\Debug\wt.dll) copy 到 c:\Windows\system 目錄中
  3. 使用 Browser 開啟 http://localhost:8080/hello
不知道為何?辦公室的電腦無法開啟讓 http  8080 port,只好將 Command Argument 改成 --http-port=80 這樣才能 Work?

2013.10.03
----------------------
再次在 office Desktop compile Wt source code, 卻出現 error C2039: 'default_token' : is not a member of 'boost::random::random_device' 的錯誤訊息,主要是問題是在 Cmake 中,將 Wt 選項的 WT_NO_BOOST_RANDOM 項目被勾選,檢查 Cmake 的 configure 檔的 log 才得知,將  WT_NO_BOOST_RANDOM 選項不勾選就可以 Compile 成功。

 -----------------------------------------------------
[1] http://redmine.webtoolkit.eu/boards/2/topics/3574?r=4541#message-4541
[2] http://andres.jaimes.net/761/how-to-compile-wt-witty-on-windows/

留言

這個網誌中的熱門文章

CodeBlocks 多國語言的設定步驟

多年來一直都是使用 CodeBlocks 英文的介面,不曾想過要將 CodeBlocks 設定成多國語言的開發環境,對於不習慣於英文介面的國人,設定中文的使用介面是非常需要的環境,在 CodeBlocks 論壇有一篇文章提到 :Do you know http://wiki.codeblocks.org/index.php?title=Internationalization ?這個連結說明在 Windows 系統如何設定 CodeBlocks 成為 Internationalization 的環境,整個設定過程如下: 到 CodeBlocks 翻譯文件網站 下載 .mo 檔案:下載時需要 Ubuntu One 的帳號及密碼,登入後點選 .mo 檔案(不要下載 .po 檔是可編輯檔) 系統會傳送一封信件,點選信件的連結,將 .mo 檔案下載 將檔案複製到 C:\Codeblocks\share\CodeBlocks\locale\zh_TW 目錄(沒有這個目錄請自己建立) 開啟 CodeBlocks >> Setting >> Environment >> View >> Internationalization 選項打勾 >> 點選 Chinese 重新開啟 CodeBlocks 要加入其他語言的 .mo 檔案,則在 locale 目錄中新增其他語言的目錄名稱,例如: 德國 de_DE,這樣 CodeBlocks 就是多國語言的開發環境了。 當如果要恢復英文的介面,只要取消 Internationalization 的選項勾選,然後再次重新開啟 CodeBlocks 就回到英文的開發環境。 後記: CodeBlocks 翻譯文件網站 要下載 .mo or .po 檔案需要等待系統回復信件到 Email 信箱,無法及時處理,將這些檔案儲存在 Google Driver 的 src/CodeBlocks 目錄,以後可以從這裡直接取用。

輸入及轉換 Unicode 編碼

如何輸入羅馬數字?不管大寫的數字 ,或者小寫的數字,不知道 Unicode 編碼的人總是會以輸入英文字母 i or I 來替代,即輸入 i, ii, iii, or I, II, III,或許他們不會面臨要輸入 4 以上的羅馬數字,這樣的做法就可以在人類的視覺誤差中暫時瞞騙過關,然而,這樣的作法卻帶來資訊系統不可見的人為問題。這篇文章將描述如何輸入正確的羅馬數字?如何搜尋 Unicode 編碼?以及如何輸入 Unicode 編碼。關於 Unicode 編碼輸入與顯示是一個相當複雜的議題,這篇文章僅針對在 Windows 作業系統中的應用程式如何輸入與搜尋 Unicode 編碼?如何在 Unicode 編碼與對應字元之間做轉換?不會涉及其他的議題;若依照下面描述的輸入方式輸入 Unicode 編碼,不保證能完全符合你/妳所使用個人電腦系統的環境,請再參考相關的文章來解決輸入與顯示 Unicode 編碼的問題。 Unicode 編碼的輸入方式 在 Wiki 的文件 中說明如何在不同環境下輸入特殊字元的 Unicode 編碼,在 Windows 作業系統中輸入 Unicode 編碼的方式如下: Microsoft Word or Wordpad:先輸入 unicode 的編碼,再按下 Alt + x,例如,在 word 中輸入 1f370,然後按下 Alt+x,就會顯示 🍰( &#x1f370)的字元 其他 Microsoft 所有應用程式:應用程式包括 Microsoft PowerPoint, Excel, VS Code 等程式,且要支援 Unicode 編碼的版本,都可以使用注音輸入法來輸入 Unicode 編碼;首先切換到注音輸入法的中文輸入模式,然後按下~鍵(Esc 下方的鍵) + u + Unicode 編碼,特別要注意輸入的數字是鍵盤上方的數字鍵,不可以使用 Number Pad 的數字鍵。 查詢 Unicode 編碼 Unicode編碼的對應字元可以連結到 The Unicode Consortium 的 Code Charts 網站,在網站中輸入你/妳想要字元的 Unicode 編碼,如此就可以找到這個 Unicode 編碼的字元,問題是:我們通常是心中有字元的圖像,或者是要先看到字元的樣子,才知道我們要使用...

cmd 程式無法執行的解決步驟

因為要設定 cmd 的編碼方式為 Unicode 編碼( chcp 65001),可能不小心修改了編碼,而導致cmd 無法開啟,主要的原因是:「cmd 變成沒有編碼」,所以才造成 cmd 無法開啟。在 Windows 8 中要恢復 cmd 編碼的步驟如下: 1. 滑鼠移到左上角,會出現功能的選項,點選「搜尋」的圖示 2. 在輸入的格子中,輸入「cmd」但是不要按下 enter 3. 滑鼠移到「cmd 命令提示字元」,,按下「滑鼠右鍵」 4. 下面會出現一些選項,點選「開啟檔案位置」,如此可以找到 cmd 命令提示字元的位置 5. 在「 命令提示字元」檔案中按下滑鼠右鍵,並點選「內容」 6. 點選「選項」,把「950 - Big 5 繁體中文」的編碼加入