前提・実現したいこと
Rakeを用いて、C言語のビルドシステムを構築しています。
複数ファイルをコンパイルする際、
CPUの複数のコアを使用して、並行でコンパイルできるようにしたいのですが、
どのようにRakeファイルを書けばいいのか、アドバイスをいただけないでしょうか?
makeでいう、「make -j」をRakeで実現したいです。
制約として、新たにGemをインストールしない方法が好ましいです。
発生している問題・エラーメッセージ
Rakeで複数ファイルのコンパイルを同時並行で行う記述方法が分かりません。
該当のソースコード
分かりやすいように、単純化したRakeファイルを記載します。
Ruby
1CC = "gcc" 2 3task :default => "hello" 4 5file "hello" => ["hello.o", "message.o"] do 6 sh "#{CC} -o hello hello.o message.o" 7end 8 9file "hello.o" => "hello.c" do ※1 10 sh "#{CC} -c hello.c" 11end 12 13file "message.o" => "message.c" do ※2 14 sh "#{CC} -c message.c" 15end
http://www2s.biglobe.ne.jp/~idesaku/sss/tech/rake/抜粋
※1、※2のファイルタスクを同時並行で実行し、
並行コンパイルを実現したいです。
試したこと
単純なRakeタスクならば、
http://nilquebe.blogspot.com/2014/06/rake-part-7-multitask.html
記載のように、multitaskを用いることで並行してタスクが実行できるのですが、
ファイルタスクの場合、どのように記載していいかが分かりません。
補足情報(FW/ツールのバージョンなど)
ruby 2.6.4p104 (2019-08-28 revision 67798) [i386-cygwin]
回答2件
あなたの回答
tips
プレビュー