Mercurial > hg > Papers > 2017 > ikkun-osc
changeset 11:33a4e0db0664
add html
author | ikkun <ikkun@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 16 Jun 2017 20:16:24 +0900 |
parents | 33cbafd41036 |
children | eef7b6e3dac3 |
files | osc.html |
diffstat | 1 files changed, 259 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/osc.html Fri Jun 16 20:16:24 2017 +0900 @@ -0,0 +1,259 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="content-type" content="text/html;charset=utf-8"> + <title>CMake 入門</title> + +<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 1.9.3 (2011-10-30) [x86_64-darwin10]"> +<meta name="author" content="Takui Higashionna" > + +<!-- style sheet links --> +<link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> +<link rel="stylesheet" href="s6/themes/screen.css" media="screen"> +<link rel="stylesheet" href="s6/themes/print.css" media="print"> +<link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection"> + +<!-- JS --> +<script src="s6/js/jquery-1.11.3.min.js"></script> +<script src="s6/js/jquery.slideshow.js"></script> +<script src="s6/js/jquery.slideshow.counter.js"></script> +<script src="s6/js/jquery.slideshow.controls.js"></script> +<script src="s6/js/jquery.slideshow.footer.js"></script> +<script src="s6/js/jquery.slideshow.autoplay.js"></script> + +<!-- prettify --> +<link rel="stylesheet" href="scripts/prettify.css"> +<script src="scripts/prettify.js"></script> + +<script> + $(document).ready( function() { + Slideshow.init(); + + $('code').each(function(_, el) { + if (!el.classList.contains('noprettyprint')) { + el.classList.add('prettyprint'); + el.style.display = 'block'; + } + }); + prettyPrint(); + } ); + + +</script> + +<!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> +<!--[if IE]> +<script src="s6/js/jquery.microsoft.js"></script> +<![endif]--> + + + +</head> +<body> + +<div class="layout"> + <div id="header"></div> + <div id="footer"> + <div align="right"> + <img src="s6/images/logo.svg" width="200px"> + </div> + </div> +</div> + +<div class="presentation"> + + <div class='slide cover'> + <table width="90%" height="90%" border="0" align="center"> + <tr> + <td> + <div align="center"> + <h1><font color="#808db5">CMake 入門</font></h1> + </div> + </td> + </tr> + <tr> + <td> + <div align="left"> + Takui Higashionna + + <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> + </div> + </td> + </tr> + </table> + </div> + +<div class='slide '> +<!-- === begin markdown block === + + generated by markdown/1.2.0 on Ruby 1.9.3 (2011-10-30) [x86_64-darwin10] + on 2017-06-16 20:16:00 +0900 with Markdown engine kramdown (1.9.0) + using options {} + --> + +<!-- _S9SLIDE_ --> +<h1 id="cmake">Cmakeとはなにか</h1> +<ul> + <li>ビルドプロセスを管理するツール</li> + <li> + <p>ビルドプロセスとは</p> + </li> + <li>ソースコードをコンパイルする</li> + <li>ソースコードとコンパイラを探す</li> + <li>コンパイルされた.oファイルをリンクしてライブラリや実行形式にする</li> + <li>テストコードを使ってテストを行う</li> + <li>生成されたライブラリやコマンドをインストールする</li> + <li>パッケージを作成して配布可能な形にする</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section">従来の方法</h1> +<ul> + <li>makeを使う。makefileを直接書きくだす</li> + <li>automakeとautoconfを使う</li> + <li>Javaならばmavenあるいはgradleを用いる</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-1">従来の方法の欠点</h1> +<ul> + <li>Makefileは本質的にシステム依存(コンパイラの場所、ライブラリの場所)</li> + <li>automakeは煩雑で難易度が高い</li> + <li>mavenはjavaにしか対応していない</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="cmake-1">CMakeを使う利点</h1> +<ul> + <li>設定ファイル(CMakeLists.txt)がシンプル</li> + <li>CMakeがコンパイラやライブラリを自動的に検索する</li> + <li>テストやパッケージング用のプラグインが豊富にある</li> + <li>Makefileを生成し、実際のビルドはmakeコマンドで行う</li> + <li>out-of-placeビルド対応(ソースツリーの外でビルドを行う)</li> + <li>Ninjaによる並列コンパイルが可能</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="cmake-2">実際にCMakeを使ってみよう</h1> +<ul> + <li>Hello World用のCMakeLists.txtを作る</li> + <li>Makefileを生成しビルドしてみる</li> + <li>out-of-placeビルドを試してみる</li> + <li>テストを行う</li> + <li>ソースコード生成を試してみる</li> + <li>CUDAを使ってみる</li> + <li>Ninja</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="hello-worldcmakeliststxt">Hello World用のCMakeLists.txtを作る</h1> + +<ul> + <li>target名とソースコードを以下のように指定する</li> +</ul> + +<p>add_executable ( hello hellow.c )</p> + +<ul> + <li>helloがtarget名となる</li> + <li>target名が生成される実行形式(コマンド)の名前となる。</li> + <li>makeコマンドのターゲットにもなる +<a href="file:sample/CmakeLists.txt">CmakeLists.txt</a></li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="makefile">Makefileを生成しビルドしてみる</h1> +<ul> + <li>cmake .でMakefileを作成する</li> + <li>make helloでビルドする</li> + <li>生成されたhelloファイルを./helloで実行する</li> + <li>MakeFileを作り直す場合、MakeFilesとMakeFileCache.txtを削除してから</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="auto-of-place">auto-of-placeビルドを試してみる</h1> +<ul> + <li>別のディレクトリに移動し、cmake ./hoge/hello でそのディレクトリにMakeFileを作成することができる</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-2">テストを行う</h1> +<ul> + <li>MakeLists.txtに以下の様にかく +<a href="file:sample1/CmakeLists.txt">CmakeLists.txt</a></li> + <li>CMake .でMakeFileを作成する</li> + <li>make testでテストすることができる。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-3">ソースコード生成を試してみる</h1> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="cuda">CUDAを使ってみる</h1> +<ul> + <li>プロジェクトに必要なcmakeの最低バージョンをを設定します。 +cmake_minimum_required(VERSION 3.7)</li> + <li>必要なCUDAのパッケージを設定します。 +find_package(CUDA REQUIRED)</li> + <li>必要なCUDAライブラリのpathを設定します。 +include_directories(/Developer/NVIDIA/CUDA-8.0/samples/common/inc)</li> + <li>target名とソースコードを以下のように指定する +cuda_add_executable(matrixMul matrixMul.cu)</li> + <li>cmake .でMakefileを作成し、make matrixMul.cuでビルドします</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="ninja">Ninja</h1> +<ul> + <li>cmkae に -G Ninjaオプションをつけてninjaのbuildファイルとルールファイルを作成します。</li> + <li>ninjaでNinjaによるコンパイルを行います。</li> +</ul> + +<p>LLVMの例題もやるのでLLVMの場所も書いておく</p> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-4">まとめ</h1> + +<!-- === end markdown block === --> +</div> + + +</div><!-- presentation --> +</body> +</html>