際際滷

際際滷Share a Scribd company logo
Cross Platform
Make
ながぬまたつみ
CMake岑ってますか

¢ 徭蛍のプロダクトで聞っている
¢ lかのプロダクトをビルドするときに
  聞ったことがある
¢ いた並ならある
¢ まあ、よく奮べるよ
CMake岑ってますか

  Cakeではありません
CMake
馨温一艶聞っていますか



    alias kachi = 'make'
Hello World (Unix)

$ vi hello.c
#include <stdio.h>
int main(void) { printf("Hello, world!n"); }
$ gcc hello.c -o hello
$ ./hello
Hello, world!
make Hello World

$ ls
Makefile hello.c
$ make
gcc hello.c -o hello
$ ls
Makefile hello.c hello
で、Windowsは


Visual Studio 2010でプロジェクトを恬っ
てビルド。

コ`ドは揖じ。
で、EclipseCDTは



プロジェクトを恬ってビルド。

コ`ドは揖じ。
で、
¢   Borland C++ は
¢   MinGW は
¢   Visual Studio 2008 は
¢   Visual Studio 2005 は
¢   Visual Studio .NET 2003 は
¢   Visual Studio .NET は
¢   Visual Studio 6.0 は
¢   Mac は
みんなどうしてるの
クロスプラットフォ`ム
アプリケ`ション
¢   Google Chrome ¢ OpenCV
¢   VirtualBox    ¢ LLVM
¢   KDE           ¢ Scribus
¢   MySQL
Autotools...? (GNU build system)



$ ./configure
$ make
CMake !


$ mkdir build && cd build
$ cmake ..
$ make
CMake 古勣

CMakeLists.txt

                 Unix Makefile
                 MinGW Makefile
                 NMake Makefile
                 Visual Studio (.prj)
    CMake        Eclipse (.project)
CMakeによるビルド

$ mkdir build && cd build
   ビルド喘のディレクトリ
   伏撹麗はすべてここに崔かれる
$ cmake ..
   CMakeLists.txtの侭を歌孚
   Makefileが伏撹される
$ make
CMakeのいいところ #1

ソ`スファイルのある侭をAさない

$ mkdir build && cd build
$ cmake ..
$ make
$ cd .. && rm -rf build
もとどおり。
CMakeのいいところ #2

CMakeLists.txtがかんたん

project(HelloWorld)
add_executable(hello hello.c)
これだけ。たった2佩。
しかもわかりやすい。
CMakeLists.txt

猟隈が階g

コマンド─紹方1/‐哈方2/ ...

これだけ。
CMakeのいいところ #3


マルチプラットフォ`ム

枠ほどのHelloWorldは...
 Windows、Linux、MacOS X、
 FreeBSD、IRIX、AIX、Sun OS、HP-UX
などに鬄
CMakeのいいところ #4

マルチIDE

枠ほどのHelloWorldは...
 GNU Make、NMake、Watcom WMake、
 Visual Studio 6?11、ClodeBlocks、
 Eclipse CDT
などに鬄
CMakeのいいところ #5


ライブラリのリンクがg
find_package (Boost)
include_directories (${Boost_INCLUDE_DIR})
add_executable (foo foo.c)
target_link_libraries (foo ${Boost_LIBRARIES})
CMakeのいいところ #6

オプションの峺協がGUIでできる。

¢ cmake ┘灰泪鵐疋薀ぅ鵤
¢ cursesベ`スのccmake
¢ Qtベ`スのcmake-gui
¢ どれでも揖じことができる
ccmake
cmake-gui
CMakeのいいところ #n



それだけではない。
CPack

インスト`ラ`の恬撹。

¢ NSIS (Windows Installer)
¢ Deb / RPM / tgz
¢ MacOS X DragNDrop /
  PackageMaker
CPack Debの箭
project (Hello)
add_executable (hello hello.c)
install (TARGETS hello DESTINATION bin)
set (CPACK_GENERATOR "DEB")
set
(CPACK_DEBIAN_PACKAGE_MAINTAINER
    "Naganuma Tatsumi") #required
include (CPack)
CTest



¢ テストケ`スのg佩畠悶?e
¢ テストY惚の砿尖
CDash


¢ Webベ`スのCIツ`ル
¢ テストY惚の燕幣
¢ 堕sやビルド彜趨などの燕幣
お挫みでどうぞ



¢ それぞれ鏡羨して嘛する
¢ Mみ栽わせても、Mみ栽わせなくても
  OK
まとめ

¢ gccコマンドの旗わりにcmakeを
¢ Makefileの旗わりにCMakeLists.txtを
¢ ツ`ルを聞ってさらに宴旋に
  $ CPack / CTest
¢ CUIとGUIでオプション峺協
  $ cmake / ccmake / cmake-gui
http://www.cmake.org/

Cross Platform
Make
ありがとうございました。
find_package

FindXXX.cmakeが柵び竃される
徭蛍で ?.cmake を恬ることもできる
set (CMAKE_MODULE_PATH
    ${CMAKE_MODULE_PATH}
    徭蛍のモジュ`ルがあるパス)
よく聞う篳

¢   CMAKE_SOURCE_DIR
¢   CMAKE_CURRENT_SOURCE_DIR
¢   CMAKE_BINARY_DIR
¢   CMAKE_C_FLAGS
¢   CMAKE_CXX_FLAGS
http://www.cmake.org/cmake/help/cmake-2-8-docs.
html#section_Commands
よく聞うコマンド

¢   ADD_EXECUTABLE / ADD_LIBRARY
¢   MESSAGE
¢   INCLUDE_DIRECTORIES
¢   TARGET_LINK_LIBRARY
http://www.cmake.org/Wiki/CMake_Useful_Variables
Y創


¢ CMake巷塀サイト
¢ CMake-2.8 Documentation
¢ Master Index CMake

More Related Content

Cross Platform Make