Tutorials:Alpsize-01 CMake/ja
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
CMakeによるパッケージ化
プログラムのパッケージ化にはCMake (2.8以降)を使用します。CMakeはクロスプラットフォームなMakeユーティリティーで、cmake & makeでプログラムのコンパイルが可能になります。CMakeの動作は設定ファイルCMakeLists.txtによって制御します。ユーザ自身が直接Makefileを書くよりももはるかに容易にビルドがおこなえます。 次の図はパッケージ化の流れのイメージです。CMakeList.txtを編集してパッケージ化をおこないます。
CMakeList.txtには、ヘッダ部、ALPS環境の読み込み、ターゲットとの依存関係の記述、および必要に応じてテストの記述等を行います。ALPSライブラリはCMake用の環境設定ファイル/opt/alps/share/alps/ALPSConfig.cmakeを用意しています。このファイルを読み込むことによりALPSビルドに必要な様々な変数を設定することができます。また、/opt/alps/share/alps/UseALPS.cmakeを読み込むことで、コンパイラの指定やリンカーのオプションなどの設定を行うことができます。以下にCMakeLists.txtの例を示します。完全なソースコードはtutorials/alpsize-01-cmake/にあります。
cmake_minimum_required(VERSION 2.8 FATAL_ERROR) project(alpsize NONE) # find ALPS Library find_package(ALPS REQUIRED PATHS ${ALPS_ROOT_DIR} $ENV{ALPS_HOME} NO_SYSTEM_ENVIRONMENT_PATH) message(STATUS "Found ALPS: ${ALPS_ROOT_DIR} (revision: ${ALPS_VERSION})") include(${ALPS_USE_FILE}) # enable C and C++ compilers enable_language(C CXX) # rule for generating 'hello world' program add_executable(hello hello.C) target_link_libraries(hello ${ALPS_LIBRARIES}) add_alps_test(hello)
find_packageのNO_SYSTEM_ENVIRONMENT_PATHオプションに注意してください。コンパイラ等の環境変数はデフォルトの設定に上書きされます。
CMakeの実行
cmakeを実行に際しては、-DALPS_ROOT_DIRオプションでALPSへのパスを指定します。
$ cmake -DALPS_ROOT_DIR=/opt/alps /somewhere/to/your/source/code
あるいは、環境変数$ALPS_HOMEでALPSへのパスを指定することも可能です。
$ export ALPS_HOME=/opt/alps $ cmake /somewhere/to/your/source/code -- Found ALPS: ... [snip] -- Configuring done -- Generating done -- Build files have been written to: /home/alps/tutorial
CMakeにより、Makefileが生成されます。Makeを使って、プログラムをビルドし実行します。
$ make [100%] Building CXX object CMakeFiles/hello.dir/hello.C.o Linking CXX executable hello [100%] Built target hello $ ./hello hello, world
CTestツールによりテストを実行します。CTestはhelloを実行し、その出力結果をhello.opの内容と比較します。
$ ctest Test project /home/alps/tutorial Start 1: hello 1/1 Test #1: hello ............................ Passed 0.07 sec 100% tests passed, 0 tests failed out of 1 Total Test time (real) = 0.07 sec