在使用Java for Eclipse進行開發時,有沒有辦法使用m4宏?確保在Eclipse編譯之前自動調用預處理器?在Eclipse和Java中使用m4宏
還是有人在Eclipse上成功地使用了另一個預處理器?
在使用Java for Eclipse進行開發時,有沒有辦法使用m4宏?確保在Eclipse編譯之前自動調用預處理器?在Eclipse和Java中使用m4宏
還是有人在Eclipse上成功地使用了另一個預處理器?
您可以在Eclipse項目中指定一個任意構建器,然後對構建器進行排序,以便在運行Java構建器之前執行該構建器。
定義新的建設者,打開項目屬性(右鍵點擊 - >屬性或ALT - 進入),選擇建設者然後新建...。選擇程序,然後在對話框中配置生成器(希望你知道這裏需要做什麼)並選擇OK。早在建設者頁面,您可以再選擇新的建設者和選擇最多直到前的Java構建
我想我有辦法。
我剛剛在Windows上使用eclipse中的c預處理器。我相信它可以適應M4,但我確實使用GNU CPP創建表示文件依賴關係的make文件。爲m4做這個將取決於你。它有一些問題。如果在預處理過程中出現錯誤,eclipse忽略它並繼續前進。另外,如果您使用「運行」構建,預處理器的控制檯輸出一旦程序啓動就會消失。
因爲我不明白螞蟻,我沒有時間學習,我的版本是基於使用Ruby的膠水。我在Ruby中編寫了一個automake,它獲取最後一次make之前已經觸及的文件列表,篩選出預處理文件以及預處理器包含的文件,掃描未觸及的預處理器文件,以查看它們是否依賴於任何已被更改,然後處理它們。
這些都取決於使用Eclipse的「建設者」,這似乎只能在Juno中工作。 在我的情況下,該項目的設置是: 創建一個項目設置的構建器,該構建器在java構建器 設置位置爲:C:\ Ruby192 \ bin \ ruby.exe之前運行 將工作目錄設置爲C:\ Ruby192 \ bin \ 將參數設置爲:C:\ preprocessors \ mymake.rb $ {build_project} $ {build_files:acf} 這會傳遞項目的目錄後面跟着已被觸及的文件 將「refresh」設置爲和「遞歸包括子文件夾」 設置編譯選項爲「包含所選資源項目」:分配控制檯 運行建設者:清洗乾淨後,在手動版本,並在autobuilds
無te根據我的簡單make將「.jpp」文件處理成「.java」文件 和「.jpp」文件可以包含「.jph」文件(只有.jph文件) 「.jph」文件可以還有#include「.jph」文件和只有「.jph」文件
所有這些文件必須位於/ src /目錄下(在/ src /目錄下的遞歸目錄下,eclipse組織java代碼和包) 。
這裏的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
請我需要做到這一點,你可以請指教程序配置如何可以做到。 –