読者です 読者をやめる 読者になる 読者になる

明日にはでっかい太陽が昇るかもしれません。

「覚悟」とは!! 暗闇の荒野に!!進むべき道を切り開く事だッ!

cmake 使ってみた

しばらくおいたままになっていたけど、 cmake を使ってみました。

とりあえず、プロジェクト構成は以下のようにしました。

cmake_sample/
 + product/
 |  + main.c
 |  + CMakeLists.txt
 + test/
 |  + main1_test.cpp
 |  + main2_test.cpp
 |  + CMakeLists.txt
 + CMakeLists.txt

実行モジュールのコードは product/ ディレクトリに配置し、テストコードを test/ に配置しました。

  • cmake_sample/CMakeLists.txt
# 使用する cmake のバージョン.
cmake_minimum_required(VERSION 3.1)

# プロジェクト名.
project(embryoshell)

# バージョン番号.
set(MAJOR_VERSION "0")
set(MINOR_VERSION "0")
set(BUILD_VERSION "0")
set(SERIAL "${MAJOR_VERSION}.${MINOR_VERSION}.${BUILD_VERSION}")

# テストを有効にする.
enable_testing()

# プロダクトコードディレクトリ.
add_subdirectory(product)

# テストコードディレクトリ.
add_subdirectory(test)
add_test(test01 test/test01_test)
add_test(test02 test/test02_test)
  • cmake_sample/product/CMakeLists.txt
# 使用する cmake のバージョン.
cmake_minimum_required(VERSION 3.1)

# プロジェクト名.
project(cmake sample)

# ソースファイル.
file(GLOB SOURCES *.c)

# リリースビルドでのコンパイルオプション.
set(CMAKE_C_FLAGS_RELEASE "-Wall -Werror -Wextra -O2")

# デバッグビルドでのコンパイルオプション.
set(CMAKE_C_FLAGS_DEBUG "-Wall -Werror -Wextra -g -pg -O0")

# 実行モジュールの作成を指示.
add_executable(sample ${SOURCES})

# リンクするライブラリを指定する.
target_link_libraries(sample
        edit
        ncurses
)
  • cmake_sample/test/CMakeLists.txt
# 使用する cmake のバージョン.
cmake_minimum_required(VERSION 3.1)

# プロジェクト名.
project(embryoshell)

# リリースビルドでのコンパイルオプション.
set(CMAKE_C_FLAGS_RELEASE "-Wall -Werror -Wextra -O2")

# デバッグビルドでのコンパイルオプション.
set(CMAKE_C_FLAGS_DEBUG "-Wall -Werror -Wextra -g -pg -O0")

# 実行モジュールの作成を指示.
add_executable(test01_test test01_test.cpp)
add_executable(test02_test test02_test.cpp)

これで、テストを googletest や cpputest を使って実施できれば、モダンな環境に近づくかな?