c++アプリをcmakeとeclipseで開発するお話

11
C++アプリCmake Eclipse で開発するお話 はしもとまさ@東海道らぐ 12月名古屋オフ 2015/12/26

Upload: masahiko-hashimoto

Post on 08-Jan-2017

1.332 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: C++アプリをCmakeとEclipseで開発するお話

C++アプリを Cmake と Eclipse で開発するお話

はしもとまさ@東海道らぐ12月名古屋オフ

2015/12/26

Page 2: C++アプリをCmakeとEclipseで開発するお話

自己紹介

● 東海道らぐ元名古屋案内人です– 現在は関東地方担当。

● ちびぎーこ保護者会(別名:日本openSUSEユーザ会)の人– 冬コミ原稿書きました! (12/31 東「メ」36b)

…ん? またうち売り子やるの???

● おーぷん万葉プロジェクトやってます!

Page 3: C++アプリをCmakeとEclipseで開発するお話

GenjiではCmakeとEclipseを利用して開発してます

さて、今日は開発環境のお話

C++で開発しているかな漢字変換です

Page 4: C++アプリをCmakeとEclipseで開発するお話

開発環境構築手順はこんな感じ

1.ソースディレクトリにCmakeLists.txtを配置

2.cmakeコマンドでEclipseプロジェクトを作成

3.Eclipseでgdbを動かしてデバッグ!(C++11を利用)

結局この手順に落ち着いた^^

Page 5: C++アプリをCmakeとEclipseで開発するお話

1. CmakeLists.txt の作成cmake_minimum_required(VERSION 2.8)PROJECT(Genji)

#select the release build type by default to get optimization flagsif(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") message(STATUS "Build type not specified: defaulting to release.")endif(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")

include(CheckCXXCompilerFlag)CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)if(COMPILER_SUPPORTS_CXX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")else() message(STATUS "${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")endif()

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)

ADD_SUBDIRECTORY(lib/fujitsubo)#ADD_SUBDIRECTORY(lib/murasaki)ADD_SUBDIRECTORY(lib/aoi)ADD_SUBDIRECTORY(src)

おまじない1

おまじない2

Page 6: C++アプリをCmakeとEclipseで開発するお話

1. CmakeLists.txt おまじない1

gdbでデバッグをするためのおまじない

#select the release build type by default to get optimization flagsif(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") message(STATUS "Build type not specified: defaulting to release.")

endif(NOT CMAKE_BUILD_TYPE)

set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")

CMAKE_BUILD_TYPE の指定がなければ「Release」に設定するよ〜というおまじない

※Eclipseプロジェクト作成時に使用します(後述)

Page 7: C++アプリをCmakeとEclipseで開発するお話

1. CmakeLists.txt のおまじない2

次は C++11 を利用するためのおまじない

include(CheckCXXCompilerFlag)CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)

if(COMPILER_SUPPORTS_CXX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

else() message(STATUS "${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")

endif()

コンパイラが C++11 をサポートしてるかチェックしてサポートしてたらフラグをセットするよ〜

というおまじない

Page 8: C++アプリをCmakeとEclipseで開発するお話

2. Eclipseプロジェクトの作成

CmakeコマンドでEclipseプロジェクトを作成します

この辺りちとめんどい^^;;;

# Eclipse用のWorkディレクトリを作成mkdir GenjiWork; cd GenjiWork

# Cmakeコマンドでプロジェクトを作成cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ../Genji

Eclipseのプロジェクトを作成しますよ〜というおまじない

これ設定しないとEclipseでgdbが動かない!

あとはEclipseで作成したプロジェクトをインポートして完了〜

CmakeLists.txt のあるディレクトリを指定

Page 9: C++アプリをCmakeとEclipseで開発するお話

3. Eclipse + gdb でデバッグ!

…の前にこの設定しないとEclipseのエディタが「こんな関数知らん」と怒り出す(ビルドは通る^^;)

1. プロジェクトのプロパティを開いて「C/C++ General」

> 「Preprocessor Include Path ...」を選択

2. 「Providers」を選択

3. 「CDT GCC Build-in Compiler Settings」の末尾に「-std=c++11」を追加

→「CDT GCC Build-in Compiler Settings」をProvidersメニューの一番上に持っていく

Page 10: C++アプリをCmakeとEclipseで開発するお話

どや、簡単やろ!!!(ぇ

Page 11: C++アプリをCmakeとEclipseで開発するお話

ご清聴、ありがとうございました!