je pense avoir un moyen.
Je viens de le faire fonctionner avec le préprocesseur c dans eclipse sur windows. Je suis sûr qu'il pourrait être adapté à M4, mais j'utilise la capacité de gnu CPP pour créer des fichiers make exprimant les dépendances d'un fichier. Faire cela pour m4 serait à vous. Il a quelques problèmes. S'il y a une erreur pendant le prétraitement, eclipse l'ignore et continue. De plus, si vous avez construit avec "run", la sortie de la console du préprocesseur disparaît dès le démarrage du programme.
Comme je ne comprends pas fourmi, et je n'ai pas le temps d'apprendre, ma version est basée sur l'utilisation de Ruby pour la colle. J'ai écrit un petit automake dans Ruby qui prend une liste de fichiers qui ont été touchés avant la dernière marque, filtre ceux qui sont des fichiers prétraités, et ceux qui sont préprocesseurs inclus, balaye les fichiers préprocesseurs intacts pour voir s'ils dépendent de quelque chose a été modifié, puis les traite tous. Tout dépend de l'utilisation des "constructeurs" d'Eclipse qui ne semblent fonctionner que dans Juno. Dans mon cas, les paramètres du projet sont: créer un générateur pour les paramètres du projet qui s'exécute avant le générateur Java définir l'emplacement à: C: \ Ruby192 \ bin \ ruby.exe définir le répertoire de travail à C: \ Ruby192 \ bin \ définir les arguments à: C: \ préprocesseurs \ mymake.rb $ {build_project} $ {build_files: acf} cela passe le répertoire du projet suivi par le fichier qui ont été touchés mis "refresh" à « projet contenant la ressource sélectionnée » et « inclure de manière récurrente sous-dossier » ensemble des options de construction pour: Allouer console Exécuter le constructeur: après le nettoyage, construit au cours de manuel, et pendant autobuilds
Aucun te que d'après ma marque simple les fichiers ".jpp" seront traités en fichiers ".java" et les fichiers ".jpp" peuvent #incluer les fichiers ".jph" (et seulement les fichiers .jph) les fichiers ".jph" peuvent aussi #include les fichiers ".jph" et seulement les fichiers ".jph"
Tous ces fichiers doivent être dans le répertoire/src/(récursivement dans les répertoires sous/src/qui est la façon dont eclipse organise le code java et les paquets) .
Voici le code 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
S'il vous plaît je besoin de le faire, pouvez-vous s'il vous plaît éclairer la configuration du programme comment il peut être fait. –