Your SlideShare is downloading. ×
0
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Cross Platform Make
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cross Platform Make

1,649

Published on

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

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,649
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
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

×