読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Makefileで複数のソースコードをコンパイルする

Makefileで複数のソースコードコンパイルする

MinGWのmakeにて複数のソースコードコンパイルする方法について確認してみた。

window messagebox

入手先

GitHub MEGA

開発環境

ライブラリ

環境変数のPathに各DLLがあるディレクトリパスを追記することでexeを実行できる。

前回まで

  1. MinGWでコンパイルできる環境が整った。
  2. さらにGTKmm3ライブラリも揃った。
  3. HelloWorldまでやった。

Makefileコンパイルする方法を以下のとおりに調べる。

実施 パターン
単体コード
複数コード
略記
サブディレクト
Release/Debug切替

ソースコード

ソースコード前回のを3ファイルに分割しただけ。

Makefile

program.exe: program.o MainWindow.o
    g++ -o program.exe program.o MainWindow.o
MainWindow.o: MainWindow.cc
    g++ -c MainWindow.cc
program.o: program.cc
    g++ -c program.cc

依存関係だけに注目するよう他のオプションは非表示にしてみた。

以下のような手順でexeを作成している。

  • .cc→.o
    • program.cc→program.o
    • MainWindow.cc→MainWindow.o
  • .o→.exe
    • program.o, MainWindow.o→program.exe

コンパイル時間とファイルサイズ

コンパイル時間 ファイルサイズ オプション
2秒 132KB -s, -O3, -DUNICODE オプションを外した。
2秒 65KB -s, -O3, -DUNICODE オプションを付けた。

なぜか前回の45秒より格段に速いコンパイル時間。

ファイル数が増えたら手間がかかるのでは?コード内容はまったく同じだから大差はないだろうけど。 なんにせよ、こんなに時短される理由がわからん。嬉しいからいいや。

所感

ふつうは今回のように.hと.ccファイルに分けてコードを書く。

前回よりは実用的なMakefileを書けた。