• このエントリーをはてなブックマークに追加

C++ の TDD本、『Modern C++ Programming with Test-Driven Development』の写経環境を構築するためのメモです。

ebookはここから購入できる。

各ツールの説明は、書籍の第1章に載っています。自分のPCはWindowsなのですが、Virtual Box 上に CentOSをインストールしてそこに開発環境を構築し、、Sambaを経由してWindows上のEclipse上から写経をしようと考えています。なので、ベースは CentOS。そのへんの導入方法は過去記事を参照のこと。

Windows環境だと、CygwinのgccやVisualStudioを利用するてもあるけれども、コンパイル時間が遅いので今回はやめた。

環境

  • CentOS 6.4(on VirtualBox on Windows 7 64bit)
  • Eclipse 4.3 kepler

ソースコードの取得

githubはこのリンクから。

コードはここからダウンロード可能。

g++

CentOSでは、C++11対応のg++4.7.2をインストールするには一工夫が必要。

cmake

サンプルコードのコンパイルには、cmakeを利用するので必要。

sudo yum -y install cmake
% cmake -version
cmake version 2.6-patch 4

Google Mock

この本の主人公、GoogleMockをインストールします。

まずは、gmockをサイトからダウンロードして解凍。最新版は1.7だが、現時点(2013/10)では、1.7だとサンプルテストがエラーしたので、1.6で入れる。

以下のサイトからダウンロード。

落としたら適当な場所におく。SampleSourseのcmakeでのビルドのために、パスを通す。

export GMOCK_HOME=/home/tsu-nera/tools/gmock

GMOCK_HOMEで、以下を実行。

mkdir mybuild
cd mybuild
cmake ..
make

続いて、gtestの方もビルドする。

cd $GMOCK_HOME/gtest
mkdir mybuild
cd mybuild
cmake ..
make

サンプルコードを動かて、テストが成功すればOK.

cd /home/tsu-nera/repo/modernCTDD/c2/2
cmake CMakeLists.txt
make
./test
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from SoundexEncoding
[ RUN      ] SoundexEncoding.RetainsSoleLetterOfOneLetterWord
[       OK ] SoundexEncoding.RetainsSoleLetterOfOneLetterWord (0 ms)
[----------] 1 test from SoundexEncoding (1 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1 ms total)
[  PASSED  ] 1 test.

おまけ、VisualStudioへのGoogleMock導入方法は以前まとめた気がした。

Eclipseの設定

Windows上でのEclipseの設定。前述のとおり、ここでは、Sambaを経路してWindows上から使います。Sambaの設定は省略です。

プロジェクト・エクスプローラを右クリックして、

  • インポート -> C/C++ -> Existing Code as Makefile Project

次に、ヘッダファイルのパスを設定する。プロジェクトのプロパティから

  • C/C++一般 -> パスおよびシンボル

を選択する。インクルードでGMockとGTestのインクルードパスを追加。

Z:\tools\gmock\include
Z:\tools\gmock\gtest\include

リモートビルドの設定はめんどくさかったので、とりあえずビルドはコンソールからコマンドを叩きます。

とりあえず、ここまでで初めの章をすすめる準備が整った。あとはひたすら読み進めるのみだが。。。Keine Zeit!!!

libcurl

Chapter5で必要となる。サイトから最新版をダウンロード。

以下のコマンドでインストール。

tar zvxf curl-7.32.0.tar.gz
export CURL_HOME=/home/tsu-nera/tools/curl-7.32.0
cd $CURL_HOME
mkdir build
cd build
cmake ..
make

JsonCpp

Chapter5で必要となる。サイトから最新版をダウンロード。

インストールには、pythonで書かれたビルドツールsconsというものが必要らしい。(makeのようなもの)。以下から落とす。

適当なところに解凍する。setup.pyが中にあるので、sconsをインストール。

sudo python setup.py install

つづいて、jsonをビルドする。

tar zvxf jsoncpp-src-0.5.0.tar.gz
export JSONCPP_HOME=/home/tsu-nera/tools/jsoncpp-src-0.5.0
cd $JSONCPP_HOME
scons platform=linux-gcc
cd $JSONCPP_HOME/libs
cp linux-gcc-4.4.7/libjson_linux-gcc-4.4.7.so libjson_linux-gcc.so

環境変数のバージョン(gcc 4.4.7)でしか、ビルドできなかった。。。とりあえず動作する。

追記:ビルドのために以下も。

export LD_LIBRARY_PATH=$JSONCPP_HOME/libs:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$CURL_HOME/build/lib:$LD_LIBRARY_PATH

Boost

C++をbotstさせるライブラリ群、Boostをインストールします。以下から、最新版を落とす。

任意のディレクトリに配置して、パスを通す。

tar zvxf boost_1_54_0.tar.gz
export BOOST_ROOT=/home/tsu-nera/tools/boost_1_54_0
export BOOST_VERSION=1.54.0

続いて、必要なライブラリをBuildする。

cd $BOOST_ROOT
./bootstrap.sh --with-libraries=filesystem,system
./b2

CppUTest

レガシーコードに対するモックはGoogleMockよりも、CppUTestのほうがモックしやすいという理由で、CppUTestも紹介されている。以下からダウンロード。

以下でインストール。

tar xvzf cpputest-3.3.tar.gz
export CPPUTEST_HOME=/home/tsu-nera/tools/cpputest-3.3
cd $CPPUTEST_HOME
make
make -f Makefile_CppUTestExt

※3.4,3.5はまだ動かない。

rlog

Chapter8でrlogが使われます。

rlog – C++ logging library – Google Project Hosting

以下でインストール。

tar xvzf rlog-1.4.tar.gz 
export RLOG_HOME=/home/tsu-nera/tools/rlog-1.4
cd $RLOG_HOME

It’s a memo of The TDD Book for C++ Study environment 『Modern C++ Programming with Test-Driven Development』


You can purchase ebook at bellow link

The instraction of how to install each tool is in tha book at chapter1. My PC is Windows, and I’m going to prepare the deveropment environment in CentOS on the Virtual Box, then access to Centos by usinng Samba from Windows(Eclipse). So this post is about CentOS installation

Environment

  • CentOS 6.4(on VirtualBox on Windows 7 64bit)
  • Eclipse 4.3 kepler

Get sample code

github link is here

You can download code from here

g++

On CentOS, You have to install g++ 4.7.2 manually

  • CentOS 6.4でC++11対応のg++ 4.7.2を使うためのメモ | Futurismo
  • cmake

    cmake is nessesory when compiling sample code

    sudo yum -y install cmake
    % cmake -version
    cmake version 2.6-patch 4
    

    Google Mock

    Fisrt, Go to gmock web site and download, Newest virsion is 1.7, but now(2013/10), it doesn’t work. So I choose version 1.6

    You can download here

    For sample code build, set path to gmock home directory

    export GMOCK_HOME=/home/tsu-nera/tools/gmock
    

    Do this at GMOCK_HOME

    mkdir mybuild
    cd mybuild
    cmake ..
    make
    

    Then build googletest

    cd $GMOCK_HOME/gtest
    mkdir mybuild
    cd mybuild
    cmake ..
    make
    

    Execute sample test

    cd /home/tsu-nera/repo/modernCTDD/c2/2
    cmake CMakeLists.txt
    make
    ./test
    [==========] Running 1 test from 1 test case.
    [----------] Global test environment set-up.
    [----------] 1 test from SoundexEncoding
    [ RUN      ] SoundexEncoding.RetainsSoleLetterOfOneLetterWord
    [       OK ] SoundexEncoding.RetainsSoleLetterOfOneLetterWord (0 ms)
    [----------] 1 test from SoundexEncoding (1 ms total)
    
    [----------] Global test environment tear-down
    [==========] 1 test from 1 test case ran. (1 ms total)
    [  PASSED  ] 1 test.
    

    Eclipse Setting

    Right click at Project Explore

    • Inport -> C/C++ -> Existing Code as Makefile Project

    Then set headerfile path, Open Project Property

    • C/C++ General -> path and symbol

    Choose include and add GMock,GTest include path

    Z:\tools\gmock\include
    Z:\tools\gmock\gtest\include
    

    It’s ready to start first capter 2,but…..Keine Zeit!!!

    libcurl

    libcurl is nessesory at Chapter5. Download from site

    Install like this

    tar zvxf curl-7.32.0.tar.gz
    export CURL_HOME=/home/tsu-nera/tools/curl-7.32.0
    cd $CURL_HOME
    mkdir build
    cd build
    cmake ..
    make
    

    JsonCpp

    JsonCpp is nessesory at Chapter5. Download from site

    To install, You need scons, a python script to build.

    Put somewhare and run setup.py

    sudo python setup.py install
    

    Then, build json

    tar zvxf jsoncpp-src-0.5.0.tar.gz
    export JSONCPP_HOME=/home/tsu-nera/tools/jsoncpp-src-0.5.0
    cd $JSONCPP_HOME
    scons platform=linux-gcc
    cd $JSONCPP_HOME/libs
    cp linux-gcc-4.4.7/libjson_linux-gcc-4.4.7.so libjson_linux-gcc.so
    

    I couldn’t build gcc 4.4.7, but it seems to work well

    To run target, You may need this.

    export LD_LIBRARY_PATH=$JSONCPP_HOME/libs:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$CURL_HOME/build/lib:$LD_LIBRARY_PATH
    

    TODO

    • CppUTest
    • rlog
    • Boost