Mercurial > hg > Papers > 2017 > ikkun-osc
changeset 3:d804033661ef
fix
author | one |
---|---|
date | Thu, 15 Jun 2017 18:07:39 +0900 |
parents | 7db1db7982b7 |
children | 24f0fa90ddc9 |
files | osc.md sample/CMakeLists.txt sample/fizzbizz sample/fizzbizz.c sample/fizzbizz.c~ |
diffstat | 5 files changed, 57 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/osc.md Thu Jun 15 17:23:33 2017 +0900 +++ b/osc.md Thu Jun 15 18:07:39 2017 +0900 @@ -3,29 +3,64 @@ profile: lang: Japanese code-engine: coderay - -# コンパイル -- コンパイルを行う際には、使用するライブラリと動作環境に応じて様々な設定を行う必要があります -- しかし、ライブラリの環境設定やそのライブラリの具体的な設定などは面倒である -- CMake はコンパイルの際に複数のファイルを必要とするコンパイルをまとめて行う。 -- CMakeはプログラムから実行ファイルをビルドする際に自動で実行ファイルを作成してくれるソフトウェアです - -# CMake の特徴 -- コンパイラに依存しないため、様々なOSに対応する -- 二層からなるコンパイル -- 最初にビルドするのに必要なライブラリ等を自動で探して通常のビルド環境を作る -- 二回目のビルドで通常のビルドを行い、実行ファイルを作る。 -- 豊富なコンパイルオプションがあり、クロスコンパイルも出来る。 -- オープンソースであり、ユーザーによる拡張が可能 -- ユーザー側が拡張することで特殊なコンパイル、OSにも対応できる。 + +#Cmakeとはなにか +- ビルドプロセスを管理するツール +- ビルドプロセスとは + +- ソースコードをコンパイルする +- ソースコードとコンパイラを探す +- コンパイルされた.oファイルをリンクしてライブラリや実行形式にする +- テストコードを使ってテストを行う +- 生成されたライブラリやコマンドをインストールする +- パッケージを作成して配布可能な形にする + +# 従来の方法 +- makeを使う。makefileを直接書きくだす +- automakeとautoconfを使う +- Javaならばmavenあるいはgradleを用いる -# CMakeLists -- CMake によるコンパイルを行うのに必要なファイル -- コンパイルするファイルの指定、オプション等を設定する。 +# 従来の方法の欠点 +- Makefileは本質的にシステム依存(コンパイラの場所、ライブラリの場所) +- automakeは煩雑で難易度が高い +- mavenはjavaにしか対応していない + +# CMakeを使う利点 +- 設定ファイル(CMakeLists.txt)がシンプル +- CMakeがコンパイラやライブラリを自動的に検索する +- テストやパッケージング用のプラグインが豊富にある +- Makefileを生成し、実際のビルドはmakeコマンドで行う +- out-of-placeビルド対応(ソースツリーの外でビルドを行う) +- Ninjaによる並列コンパイルが可能 + +# 実際にCMakeを使ってみよう +- Hello World用のCMakeLists.txtを作る +- Makefileを生成しビルドしてみる +- out-of-placeビルドを試してみる +- テストを行う +- ソースコード生成を試してみる +- CUDAを使ってみる +- Ninja -# CMakaeの macroコマンド -- ユーザー側は macro コマンドを利用することでコンパイル機能を拡張することが出来る。 -- +# Hello World用のCMakeLists.txtを作る + +# Makefileを生成しビルドしてみる + +# auto-of-placeビルドを試してみる + +# テストを行う + +# ソースコード生成を試してみる + +# CUDAを使ってみる + +# Ninja +# まとめ + + + + +
--- a/sample/CMakeLists.txt Thu Jun 15 17:23:33 2017 +0900 +++ b/sample/CMakeLists.txt Thu Jun 15 18:07:39 2017 +0900 @@ -1,4 +1,4 @@ -add_executable ( fizzbizz fizzbizz.c ) + add_executable ( hello hellow.c )
--- a/sample/fizzbizz.c Thu Jun 15 17:23:33 2017 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#include<stdio.h> - -int main(void) -{ - int i; - for (i=1 ; i<=100;i++) - if(i%5==0 && i%3==0) - printf( "FizzBuzz\n"); - else if(i%5==0) - printf( "Fizz\n" ); - else if(i%3==0) - printf( " Buzz\n" ); - else - printf( "%d\n",i); - return 0; - }
--- a/sample/fizzbizz.c~ Thu Jun 15 17:23:33 2017 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -#include<stdio.h> - -int main(void) -{ - int i; - for (i=1 ; i<=100;i++) - if(i%5==0) - printf( "Fizz\n" ); - else if(i%5==0 && i%3==0) - printf( "FizzBuzz\n"); - else - printf( "%d\n",i); - return 0; - }