Java for Eclipse で開発するときに m4 マクロを使用する方法はありますか。Eclipse がコンパイルされる前に、プリプロセッサが自動的に呼び出されるようにしますか?
または、別のプリプロセッサを Eclipse で正常に使用した人はいますか?
私には方法があると思います。
WindowsのEclipseでcプリプロセッサで動作するようになりました。M4に適応できると確信していますが、ファイルの依存関係を表すmakeファイルを作成するgnu CPPの機能を使用しています。m4でそれを行うのはあなた次第です。いくつか問題があります。前処理中にエラーが発生した場合、Eclipse はそれを無視して続行します。また、「run」でビルドした場合、プリプロセッサのコンソール出力は、プログラムが開始されるとすぐに消えます。
私は ant を理解しておらず、学習する時間がないため、私のバージョンは接着剤として Ruby を使用することに基づいています。Ruby でちょっとした automake を書きました。この automake は、最後の make の前に変更されたファイルのリストを取得し、プリプロセスされたファイルとプリプロセッサのインクルードであるファイルを除外し、未処理のプリプロセッサ ファイルをスキャンして、それらが何かに依存しているかどうかを確認します。変更されてから、それらすべてを処理します。
これらはすべて、Juno でのみ機能するように見える Eclipse の「ビルダー」の使用に依存しています。私の場合、プロジェクトの設定は次のとおりです。Java ビルダーが場所を C:\Ruby192\bin\ruby.exe に設定する前に実行されるプロジェクト設定のビルダーを作成します。作業ディレクトリを C:\Ruby192\bin\ に設定します。引数を次のように設定します: C:\preprocessors\mymake.rb ${build_project} ${build_files:acf} これにより、プロジェクトのディレクトリが渡され、その後に変更されたファイルが渡されます。「refresh」を「選択したリソースを含むプロジェクト」に設定します。および「再帰的にサブフォルダーを含める」ビルドオプションを次のように設定します:コンソールを割り当てるビルダーを実行します:クリーン後、手動ビルド中、および自動ビルド中
私の単純なmakeに従って、「.jpp」ファイルは「.java」ファイルに処理され、「.jpp」ファイルは「.jph」ファイルを含めることができます(.jphファイルのみ)「.jph」ファイルも # 「.jph」ファイルを含め、「.jph」ファイルのみを含める
これらのファイルはすべて /src/ ディレクトリの下にある必要があります (Eclipse が Java コードとパッケージを編成する方法である /src/ の下のディレクトリに再帰的に配置されます)。
Rubyコードは次のとおりです。
require 'set'
$path = (ARGV[0].gsub('\\','/')+'/src')
$process=(ARGV[1..-1]||[]).map{ |a| a.gsub('\\','/') }
def pending(ending)
($process.select do |a|
a[0..$path.length-1]==$path && a[-4..-1].downcase == ending
end).to_set
end
def read_make_dependencies(filename)
((File.open(filename).read.
split("\n")[1..-1].
map do |a|
if a[-2..-1]==' \\'
a=a[0..-3]
end
a.lstrip.gsub('\\/','/').gsub('\\','/').rstrip
end)||[]).to_set
end
$pendingJph=pending('.jph')
$pendingJpp=pending('.jpp')
Dir.chdir($path)
$untouchedJph=Dir['**/*.jph'].map{|a| $path+'/'+a}.to_set - $pendingJph
$untouchedJpp=Dir['**/*.jpp'].map{|a| $path+'/'+a}.to_set - $pendingJpp
Dir.chdir('C:/MinGW/bin')
$pendingJph.each do|a|
o = a[0..-4]+'depend'
system "cpp -MM \"#{a}\" -o \"#{o}\""
$pendingJph = $pendingJph + read_make_dependencies(o)
end
$untouchedJpp.each do|a|
o = a[0..-4]+'depend'
system "cpp -MM \"#{a}\" -o \"#{o}\""
if not (read_make_dependencies(o) & $pendingJph).empty?
puts "touching #{a}"
$pendingJpp << a
end
end
$pendingJpp.each do|a|
o = a[0..-4]+'java'
puts "processing #{a}"
system "cpp -w -P -C -x c \"#{a}\" -o \"#{o}\""
end
Eclipse プロジェクトで任意のビルダーを指定し、Java ビルダーが実行される前に実行されるようにビルダーを注文できます。
新しいビルダーを定義するには、プロジェクト プロパティを開き (右クリック -> [プロパティ] またはalt- enter)、[ビルダー]、[新規... ] の順に選択します。Programを選択し、ダイアログでビルダーを構成し (ここで何をする必要があるかを知っていることを願っています)、OK を選択します。Buildersページに戻り、新しいビルダーを選択して、 Java Builderの前になるまでUpを選択します。