##################################################### # GNUmakeのシェルにMS-DOSのプロンプトを使う方法 # # written by coop software # # URL: http://www.ecoop.net/coop/ # ##################################################### #(実行方法) # 任意のフォルダにこのファイルを保存し、そこを # コマンドプロンプトのカレントディレクトリにして、 # # make -f"sample_4.txt" # # と入力。これでエラーが出る場合は本当にGCC付属の # make.exeを実行しているかを、 # # make --version # # コマンドで確認すること(GNU Make version〜と出れ # ばよい)。 # ##################################################### #(実験として行わせる動作) #☆メインターゲット(TEST) # # /C #コマンドプロンプトの/Cオプション。必ずコマンドを実行する #前に必要。 #コマンドを実行させる事と実行後はシェルとしてのMS-DOSプロ #ンプトを一旦終了させる事という意味があり、必ず命令する。 #(忘れるとコマンドが正常に実行されないばかりかMS-DOSプロン #プトがMS-DOSプロンプト内で実行される事になるので入れ子に #なる) # # gcc --help >temp.txt #試験的な操作対象ファイルを作成するためにgccのヘルプ情報 #をtemp.txtファイルに出力。 # # copy temp.txt gcchelp.txt #copyコマンドのテスト。 #temp.txtをgcchelp.txtという名前でコピーするが、この操作 #自体には意味がない。 # # start gcchelp.txt #startコマンドのテスト。 #gcchelp.txtを関連付けされたアプリケーションから起動。 # #☆クリーンターゲットでの動作(clean) # # del temp.txt #delコマンドのテスト。 #temp.txtを削除する。 # # erase gcchelp.txt #eraseコマンドのテスト。 #gcchelp.txtを削除する。効力はdelに同じ。 # # dir # 最後にdirコマンドのテスト。 # dirなどUNIX系にもあるコマンドはそちらが優先される場合が # あるようです。 # # ########################################################## #説明ここまで。ここからがメイン。 ########################################################## SHELL=command # WindowsXPの場合は下が有効になる。 SHELL=cmd # COMSPEC,MAKESHELLというものも有効な筈なのですが、 # WinXPで確認したところ、なぜか失敗しました。 .PHONY:TEST all clean #必要であれば常に実行させるターゲットである事を明示。 all: TEST clean #TEST,cleanの順でターゲットを実行 #TESTとcleanを実行(方法1) TEST: /C gcc --help >temp.txt /C copy temp.txt gcchelp.txt /C start gcchelp.txt /C dir clean: /C del temp.txt /C erase gcchelp.txt ########################################################## #(方法2) #WindowsXPの場合… #以下のようにすることもできる。こうするとUNIXシェルで\を使 #ったのと同様に動作する。つまり、一つのシェルで複数コマンド #を実行する。最後の追加説明も参照。 ########################################################## # #TEST: # /C\ # gcc --help >temp.txt &&\ # copy temp.txt gcchelp.txt &&\ # start gcchelp.txt &&\ # dir # #clean: # /C\ # del temp.txt &&\ # erase gcchelp.txt ########################################################## #(追加説明) # \ #各行の最後の\は実行時に次の #行と連結させて一行とするもの。コマンドプロンプトを #シェルにする時は各ターゲットの最後以外の行に必ずつける。 # # && #コマンドプロンプトのコマンド連結文字。 #各ターゲットの最初の行(/C\)と最後の行以外は必ず&&\として #おくこと。 #[EOF]