linux:gnu_make

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
linux:gnu_make [2009/02/13 00:00] ともやんlinux:gnu_make [2019/08/19 06:48] (現在) ともやん
行 4: 行 4:
  プログラム開発では、ソースコード修正、ビルド、テストを何度も繰り返し行うことになるが、その際に上記に述べたような機能は非常に重要な要素である。\\  プログラム開発では、ソースコード修正、ビルド、テストを何度も繰り返し行うことになるが、その際に上記に述べたような機能は非常に重要な要素である。\\
 \\ \\
- make自体はIDEからも利用されており、上記に述べたことを実現しつつビルドを自動化するために利用される。その他にUnitテストやインストールの実行も自動化することが可能である。\\+ make 自体は IDE からも利用されており、上記に述べたことを実現しつつビルドを自動化するために利用される。その他に Unit テストやインストールの実行も自動化することが可能である。\\
  
 ===== 作業を自動化するMakefileの記述 ===== ===== 作業を自動化するMakefileの記述 =====
- makeコマンドを実行すると、カレントフォルダに存在する Makefile もしくは makefile の内容が実行される。\\+ make コマンドを実行すると、カレントフォルダに存在する Makefile もしくは makefile の内容が実行される。\\
 \\ \\
- 例えば、単一のC++ソースをコンパイルするには、以下のコマンドを実行する。\\+ 例えば、単一の C++ ソースをコンパイルするには、以下のコマンドを実行する。\\
 <code bash> <code bash>
 $ g++ -o hellocpp hellomain.cpp $ g++ -o hellocpp hellomain.cpp
 </code> </code>
  これをMakefileで記述すると以下のようになる。\\  これをMakefileで記述すると以下のようになる。\\
-\\ +<file autoconf Makefile>
-[Makefile] +
-<code>+
 hellocpp: hellomain.cpp hellocpp: hellomain.cpp
  g++ -o hellocpp hellomain.cpp  g++ -o hellocpp hellomain.cpp
-</code>+</file>
  ※注意: 2行目の先頭はタブを挿入しなければならない。スペースだと次のようなエラーになる。「Makefile:2: *** 分離記号を欠いています.  中止.」\\  ※注意: 2行目の先頭はタブを挿入しなければならない。スペースだと次のようなエラーになる。「Makefile:2: *** 分離記号を欠いています.  中止.」\\
 \\ \\
行 28: 行 26:
 </code> </code>
  
-===== 複数ソースファイルから実行ファイルをビルドするMakefileの記述 =====+===== 複数ソースファイルから実行ファイルを生成するMakefileの記述 =====
  プログラム開発を行う場合は、流用性や保守性を向上させたり管理しやすくするために、ソースコードを機能単位に分割することになる。しかし、ソースコードを分割することによってファイル数は増加し、流用することによってファイル間で依存関係が発生するので、修正されたファイルを漏れなく処理することや依存を考慮したビルド順序が複雑になり管理が困難になってくる。\\  プログラム開発を行う場合は、流用性や保守性を向上させたり管理しやすくするために、ソースコードを機能単位に分割することになる。しかし、ソースコードを分割することによってファイル数は増加し、流用することによってファイル間で依存関係が発生するので、修正されたファイルを漏れなく処理することや依存を考慮したビルド順序が複雑になり管理が困難になってくる。\\
 \\ \\
行 36: 行 34:
 \\ \\
  以下に複数ソースファイルから実行ファイルをビルドする Makefile の例を示す。\\  以下に複数ソースファイルから実行ファイルをビルドする Makefile の例を示す。\\
-\\ +<file autoconf Makefile>
-[Makefile] +
-<code>+
 StockPricesImport: Http.o MySQLDB.o StockPricesImportApp.o StockPricesImport: Http.o MySQLDB.o StockPricesImportApp.o
  g++ -o StockPricesImport Http.o MySQLDB.o StockPricesImportApp.o  g++ -o StockPricesImport Http.o MySQLDB.o StockPricesImportApp.o
行 47: 行 43:
 StockPricesImportApp.o: StockPricesImportApp.cpp StockPricesImportApp.h StockPricesImportApp.o: StockPricesImportApp.cpp StockPricesImportApp.h
  g++ -c StockPricesImportApp.cpp  g++ -c StockPricesImportApp.cpp
-</code>+</file>
  Makefileの意味は以下の通り。\\  Makefileの意味は以下の通り。\\
   * StockPricesImport ターゲットは、Http.o、MySQLDB.o、StockPricesImportApp.o の四つのファイルに依存している。   * StockPricesImport ターゲットは、Http.o、MySQLDB.o、StockPricesImportApp.o の四つのファイルに依存している。
行 78: 行 74:
 make: 'StockPricesImport' は更新済みです make: 'StockPricesImport' は更新済みです
 </code> </code>
-===== 参考資料 ===== + 
- この文章を作成するに当たって、以下の文献を参考にさせて頂きました。原文の著者、翻訳者の方々に感謝いたします。 +===== 偽りのターゲットを使ったテクニック ===== 
-[[http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html|GNU make 日本語訳(Coop編)]]\\+準備中... 
 +===== 参考文献 ===== 
 +この文章を作成するに当たって、以下の文献を参考にさせて頂きました。原文の著者、翻訳者の方々に感謝いたします。\\ 
 +\\ 
 + [[http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html|GNU make 日本語訳(Coop編)]]\\ 
 +  著者: リチャード・M・ストールマン, ローランド・マグラス (GNU プロジェクト)\\ 
 +  翻訳者: いのまた みつひろ さん/[[http://www.ecoop.net/|ecoop.net]]\\ 
 + 
  
  • linux/gnu_make.1234450851.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)