Cross Platform Make

  • 1,467 views
Uploaded on

CMakeとはどんなもので、他のビルドツール(MakeやAutotoolsなど)と比べてどんな利点があるのかについて、初めて知る人を想定した解説です。NSEG第24回白馬合宿(2012年2月11日)の発表資料。

CMakeとはどんなもので、他のビルドツール(MakeやAutotoolsなど)と比べてどんな利点があるのかについて、初めて知る人を想定した解説です。NSEG第24回白馬合宿(2012年2月11日)の発表資料。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,467
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
6
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Cross PlatformMakeながぬまたつみ
  • 2. CMake知ってますか?● 自分のプロダクトで使っている● 誰かのプロダクトをビルドするときに 使ったことがある● 聞いた事ならある● まあ、よく食べるよ
  • 3. CMake知ってますか? Cakeではありません
  • 4. CMake
  • 5. make使っていますか alias kachi = make
  • 6. Hello World (Unix)$ vi hello.c#include <stdio.h>int main(void) { printf("Hello, world!n"); }$ gcc hello.c -o hello$ ./helloHello, world!
  • 7. make Hello World$ lsMakefile hello.c$ makegcc hello.c -o hello$ lsMakefile hello.c hello
  • 8. で、Windowsは?Visual Studio 2010でプロジェクトを作ってビルド。コードは同じ。
  • 9. で、Eclipse(CDT)は?プロジェクトを作ってビルド。コードは同じ。
  • 10. で、● Borland C++ は?● MinGW は?● Visual Studio 2008 は?● Visual Studio 2005 は?● Visual Studio .NET 2003 は?● Visual Studio .NET は?● Visual Studio 6.0 は?● Mac は?
  • 11. みんなどうしてるの?クロスプラットフォームアプリケーション● Google Chrome ● OpenCV● VirtualBox ● LLVM● KDE ● Scribus● MySQL
  • 12. Autotools...? (GNU build system)$ ./configure$ make
  • 13. CMake !$ mkdir build && cd build$ cmake ..$ make
  • 14. CMake 概要CMakeLists.txt Unix Makefile MinGW Makefile NMake Makefile Visual Studio (.prj) CMake Eclipse (.project)
  • 15. CMakeによるビルド$ mkdir build && cd build ビルド用のディレクトリ 生成物はすべてここに置かれる$ cmake .. CMakeLists.txtの場所を参照 Makefileが生成される$ make
  • 16. CMakeのいいところ #1ソースファイルのある場所を汚さない$ mkdir build && cd build$ cmake ..$ make$ cd .. && rm -rf buildもとどおり。
  • 17. CMakeのいいところ #2CMakeLists.txtがかんたんproject(HelloWorld)add_executable(hello hello.c)これだけ。たった2行。しかもわかりやすい。
  • 18. CMakeLists.txt文法が超簡単コマンド(【引数1】【引数2】 ...)これだけ。
  • 19. CMakeのいいところ #3マルチプラットフォーム対応先ほどのHelloWorldは... Windows、Linux、MacOS X、 FreeBSD、IRIX、AIX、Sun OS、HP-UXなどに対応。
  • 20. CMakeのいいところ #4マルチIDE対応先ほどのHelloWorldは... GNU Make、NMake、Watcom WMake、 Visual Studio (6〜11)、ClodeBlocks、 Eclipse CDTなどに対応。
  • 21. CMakeのいいところ #5ライブラリのリンクが簡単find_package (Boost)include_directories (${Boost_INCLUDE_DIR})add_executable (foo foo.c)target_link_libraries (foo ${Boost_LIBRARIES})
  • 22. CMakeのいいところ #6オプションの指定がGUIでできる。● cmake (コマンドライン)● cursesベースのccmake● Qtベースのcmake-gui● どれでも同じことができる
  • 23. ccmake
  • 24. cmake-gui
  • 25. CMakeのいいところ #nそれだけではない。
  • 26. CPackインストーラーの作成。● NSIS (Windows Installer)● Deb / RPM / tgz● MacOS X DragNDrop / PackageMaker
  • 27. 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") #requiredinclude (CPack)
  • 28. CTest● テストケースの実行(全体・個別)● テスト結果の管理
  • 29. CDash● WebベースのCIツール● テスト結果の表示● 履歴やビルド状況などの表示
  • 30. お好みでどうぞ● それぞれ独立して動作する● 組み合わせても、組み合わせなくても OK
  • 31. まとめ● gccコマンドの代わりにcmakeを● Makefileの代わりにCMakeLists.txtを● ツールを使ってさらに便利に ○ CPack / CTest● CUIとGUIでオプション指定 ○ cmake / ccmake / cmake-gui
  • 32. http://www.cmake.org/Cross PlatformMakeありがとうございました。
  • 33. find_packageFindXXX.cmakeが呼び出される自分で 〜.cmake を作ることもできるset (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 自分のモジュールがあるパス)
  • 34. よく使う変数● CMAKE_SOURCE_DIR● CMAKE_CURRENT_SOURCE_DIR● CMAKE_BINARY_DIR● CMAKE_C_FLAGS● CMAKE_CXX_FLAGShttp://www.cmake.org/cmake/help/cmake-2-8-docs.html#section_Commands
  • 35. よく使うコマンド● ADD_EXECUTABLE / ADD_LIBRARY● MESSAGE● INCLUDE_DIRECTORIES● TARGET_LINK_LIBRARYhttp://www.cmake.org/Wiki/CMake_Useful_Variables
  • 36. 資料● CMake公式サイト● CMake-2.8 Documentation● Master Index CMake