Cross Platform Make
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Cross Platform Make

  • 2,007 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
2,007
On Slideshare
2,007
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