差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
linux:gnu_make [2012/03/05 01:55] – [偽りのターゲットを使ったテクニック] ともやん | linux:gnu_make [2019/05/18 02:23] – 外部編集 非ログインユーザー | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | <ifauth !@loggedinusers>< | ||
+ | <script async src="// | ||
+ | < | ||
+ | | ||
+ | google_ad_client: | ||
+ | enable_page_level_ads: | ||
+ | }); | ||
+ | </ | ||
====== GNU make ====== | ====== GNU make ====== | ||
最近では、統合開発環境(IDE - Integrated Development Environment)が発達したことにより、規模の大きいプログラムを開発する場合でも、ソースコード群への変更がビルド生成物(実行イメージなど)に漏れなく確実に反映されることが当たり前となっている。\\ | 最近では、統合開発環境(IDE - Integrated Development Environment)が発達したことにより、規模の大きいプログラムを開発する場合でも、ソースコード群への変更がビルド生成物(実行イメージなど)に漏れなく確実に反映されることが当たり前となっている。\\ | ||
行 4: | 行 12: | ||
プログラム開発では、ソースコード修正、ビルド、テストを何度も繰り返し行うことになるが、その際に上記に述べたような機能は非常に重要な要素である。\\ | プログラム開発では、ソースコード修正、ビルド、テストを何度も繰り返し行うことになるが、その際に上記に述べたような機能は非常に重要な要素である。\\ | ||
\\ | \\ | ||
- | 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 | ||
</ | </ | ||
これを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> |
※注意: | ※注意: | ||
\\ | \\ | ||
行 36: | 行 42: | ||
\\ | \\ | ||
以下に複数ソースファイルから実行ファイルをビルドする Makefile の例を示す。\\ | 以下に複数ソースファイルから実行ファイルをビルドする Makefile の例を示す。\\ | ||
- | \\ | + | <file autoconf Makefile> |
- | [Makefile] | + | |
- | <code> | + | |
StockPricesImport: | StockPricesImport: | ||
g++ -o StockPricesImport Http.o MySQLDB.o StockPricesImportApp.o | g++ -o StockPricesImport Http.o MySQLDB.o StockPricesImportApp.o | ||
行 47: | 行 51: | ||
StockPricesImportApp.o: | StockPricesImportApp.o: | ||
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 の四つのファイルに依存している。 |