view osc.html @ 12:eef7b6e3dac3

fix
author ikkun <ikkun@cr.ie.u-ryukyu.ac.jp>
date Fri, 16 Jun 2017 20:21:25 +0900
parents 33a4e0db0664
children
line wrap: on
line source

<!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:21:09 +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でビルドします
<a href="file:sample2/CmakeLists.txt">CmakeLists.txt</a>
# Ninja</li>
  <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>