コマンドラインからのコンパイル、実行を楽するために rake を使ってみる。
C# プログラムを書いてから、コンパイル、実行するとき、以下のようにコマンドラインからコマンドを実行しています。
% cat test.cs using System; class Test { static void Main() { Console.WriteLine("Hello C#"); } } % mcs test.cs -out:a.exe % mono a.exe Hello C#
もしくは、
% mcs test.cs -out:a.exe && mono a.exe Hello C#
-out
オプションで実行ファイル名を指定しているのは、実行ファイルがいくつもフォルダに作られないようにするためです。
Project Euler の問題を解くときには、コマンドラインで実行するコマンドが決まりきっているため、もう少し楽できないか考えてみました。自作スクリプトを書いて更新日付がもっとも新しい C# プログラムをコンパイル、実行するようにすることを考えたのですが、勉強のために rake を使ってみました。
task :default => :compile_and_run task :compile_and_run do sh "mcs #{ENV['p']}.cs -out:a.exe" sh 'mono a.exe' end
実行結果です。
% cat test.cs using System; class Test { static void Main() { Console.WriteLine("Hello C#"); } } % rake p=test mcs test.cs -out:a.exe mono a.exe Hello C#
コマンドの指定が少しだけ楽になりました。次に、カレントディレクトリの *.cs ファイルのうち、更新日時がいちばん新しいファイルを取得するようにしてみます。
実行結果です。
% rake mcs test.cs -out:a.exe mono a.exe Hello C#
少しだけコンパイル、実行が楽になりました。rake 便利ですね。