code-prettify

2015年3月21日 星期六

googletest - Google C++ Testing Framework - Visual Studio 2013

本文介紹如何在 Visual Studio 2013 使用 Google C++ Testing Framework

首先取得 gtest,下載 gtest-1.7.0.zip
解壓縮之後,在 msvc 資料夾下可以找到 gtest, gtest-md 兩個方案檔,
兩個方案差別在 gtest 編譯屬性為 MT (MTd),而 gtest-md 為 MD (MDd),
這裡要選擇跟待測專案同樣的設定,關於 MD, MT 詳細資訊請見 MSDN


如果手邊沒有現有專案的話,先建立一個空專案在 C:\Project1,
因為 VS C++ 專案預設為 MD,所以接下來選擇 gtest-md 為範例。

直接點擊兩下gtest-md 方案,VS 會自動將 VS 2003 版本轉換為 VS2013 版本,
編譯之後,複製 msvc\gtest-md\Debug\gtestd.lib 及 C:\gtest-1.7.0\msvc\gtest-md\Release\gtest.lib
到 C:\Project1\Project1\gtest\lib
另外複製 C:\gtest-1.7.0\include 整個資料夾到 C:\Project1\Project1\gtest。



接著設定 Project1 的專案使用 googletest,分別是
其他 Include 目錄為 .\gtest\include
其他程式庫目錄為 .\gtest\lib
其他相依性為 gtest.lib




接著將 main.cpp 改為下列範例
#include "gtest/gtest.h"
 
int main(int argc, char* argv[])
{
 ::testing::InitGoogleTest(&argc, argv);
 return RUN_ALL_TESTS();
}
 
int add(int a, int b)
{
 return a + b;
}
 
TEST(AddTest, Test1) {
 EXPECT_EQ(3, add(1, 2));
}

編譯,執行成功!
恭喜可以開始進行 Unit Test 了!



註:如果使用 Visual Studio 2012 會遇到「error C2977: 'std::tuple' : 樣板 引數太多 」錯誤
可以參考這篇:error C2977: 'std::tuple' : too many template arguments


參考資料:
googletest - Google C++ Testing Framework
https://code.google.com/p/googletest/

Primer - Getting started with Google C++ Testing Framework
https://code.google.com/p/googletest/wiki/Primer

Samples - Google C++ Testing Framework Samples
https://code.google.com/p/googletest/wiki/Samples

2015年3月20日 星期五

error C2977: 'std::tuple' : too many template arguments

最近遇到「error C2977: 'std::tuple' : 樣板 引數太多 」的問題,
上網查詢之後發現是 Visual Studio 2012 不支援 variadic templates,
解決方案是在前置處理器定義加上 _VARIADIC_MAX 10
註:Visual Studio 2013 已支援


參考資料:
C2977: 'std::tuple' : too many template arguments (MSVC11)
http://stackoverflow.com/questions/8274588/c2977-stdtuple-too-many-template-arguments-msvc11

2014年10月30日 星期四

Cocos2d-x 3.2 - Chapter 6 - How to Play Music and Sound Effect

Cocos2d-x 3.2 - Chapter 6 - How to Play Music and Sound Effect

Cocos2d-x 3.2 - Step by Step Cocos2dxSimpleGame Series

接著上一篇 Cocos2d-x 3.2 - Chapter 5 - How to Detect the Collisions

在這個章節,我們加入背景音樂及發射子彈時的聲音。

在 HelloWorldScene.cpp 加入 include SimpleAudioEngine.h


#include "SimpleAudioEngine.h"
然後在 init 函式裡面加上這段程式碼,撥放背景音樂。


CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic(
  "audio/background-music-aac.wav", true);
然後在 addProjectile函式裡面加上這段,撥放子彈音效。

CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/pew-pew-lei.wav");

參考資料:
Cocos2d-x
http://www.cocos2d-x.org/

Step by Step Cocos2dxSimpleGame Series (Old Version for cocos2d-x v2.x)
http://www.cocos2d-x.org/wiki/Step_by_Step_Cocos2dxSimpleGame_Series

使用 VirtualBox 安裝 Linux Mint Cinnamon 17

Host: Windows 7

VM:
VirtualBox 4.3.18

Guest:
Linux Mint Cinnamon 17 Qiana

Mint Cinnamon 版本的系統需求為:
Processor (x86) 700 MHz
Memory 512 MB
Hard Drive (free space) 8.6 GB
Monitor Resolution 800 x 600

安裝流程:

.先到 Mint 網站下載 Mint Cinnamon ISO 檔案
選擇第一個 Cinnamon 版本 64-bit (linuxmint-17-cinnamon-64bit-v2.sio)

.開啟 Virtual Box 點選新增

.建立虛擬機器,名稱:Mint-Cinnamon-17;類型:Linux;版本:UBuntu (64 bit)

.調整記憶體大小為 2048MB (如果主機的記憶體不多的話,依建議設為 512 MB 即可)

.建立虛擬機硬碟空間

.選擇 VMDK (只是個人偏好,因為歷史因素,多數虛擬器皆直接支援該格式)


.這裡要特別注意,硬碟大小改為 16 GB。
(預設值是 8GB,因為 Mint Cinnamon 要求硬碟空間至少要 8.6 GB,所以一定要調整。)

.到第一步已經完成虛擬機的建立了,接著進行設定微調。
這些設定都是個人偏好,可以依自己的需求及硬體規格改變。



.所有設定完成,啟動虛擬機。

.第一次啟動虛擬機時,會出現選擇啟動磁碟。
這時候選擇之前下載好的 image。(linuxmint-17-cinnamon-64bit-v2.iso)

.這個錯誤訊息我不了解發生原因為何,目前是直接跳過。

.進入(虛擬)光碟開機中。時間倒數完會自動進入 Mint 光碟啟動環境。

.如果在倒數過程中按下任意鍵,則會出現此畫面,
保持第一個選項按 Enter 進入 Mint 光碟啟動環境。

.過了一段時間後,進入Mint 光碟啟動環境,選擇桌面上的 Install Linux Mint。
這個環境可以讓你無需安裝先試用一下 Mint,當然不是所有的動作都可以執行的。

.選擇語系為 中文(繁體)。

.如果之前的步驟沒有跳過,這裡的硬碟空間應該會大於 8.6 GB。
如果第一項檢查沒有過,表示你用到預設值,硬碟空間只有 8 GB。
Vitrual Box 預設網路設定為 NAT,會直接使用 Host 的網路,
如果沒有網路,先確認一下主機是否有網路。

.預設值不變更,立刻安裝。

.這一步是選擇時區的意思。

.雖然預設是「漢語」,但是個人偏好改為英語(美式)。

.接著設定電腦及使用者資訊。這裡設定的密碼同時也會作為 root 的密碼。

.設定完成,看到這畫面表示開啟安裝了,可以出去走走再回來。

.安裝完成,重新啟動電腦。

.重開機之後,進入了登入畫面,登入使用者名稱及密碼後登入。

.登入後的桌面環境。

.接著進行關機,左下角選單 / 關機。

.選擇「關閉電腦」

.接著回到 Virtual Box 的管理介面,選 機器 / 再製。
目的是保留一個剛安裝好的環境,省去之後重新安裝的動作。
(雖然有快照可以用,但是還是想完整 Copy 一份)

.輸入新虛擬機名稱。


.點選新的虛擬機,啟動。


以上 Mint Cinnamon 教學到此告一段落,
接著有興趣的人可以參考:
如何使用 ssh 連接到 VirtualBox 下的 Linux Mint Cinnamon


參考來源:

MagicLen - Linux Mint 17 MATE 安裝教學
http://magiclen.org/linux-mint-17-mate-install/

How to Enable SSH on Linux Mint 15 /14 / 13 / 12
http://linuxg.net/how-to-enable-ssh-on-linux-mint-15-14-13-12/