Quel outil utilisez-vous pour construire un programme Erlang: Emake, makiefile ou autre?Quel outil utilisez-vous pour construire un programme Erlang?
Répondre
Depuis ces réponses, une nouvelle norme a vu le jour dans la communauté Erlang:
Voici le fichier Makefile et Emakefile que j'utilise habituellement avec make (origine inconnue).
Makefile:
ERL=erl
APPFILE=myApp.app
all: ebin/$(APPFILE)
$(ERL) -make
ebin/$(APPFILE): src/$(APPFILE)
cp $< [email protected]
Emakefile:
{"src/*", [debug_info, {outdir, "ebin"}, {i, "include"}]}.
J'utilise un Rakefile appeler un Emakefile. Rakefile pour la flexibilité et Emakefile pour vitesse!
Ce système de construction est assez puissant, voir erl_rake
sur GitHub
.app fichiers Génère, builds versions, exécute automatiquement EUnit essai. Et étant donné qu'il est construit autour d'un Rakefile, j'ai ajouté facilement la version AWS et j'ai exécuté mes tests avec etap à la place.
J'ai personnalisé une ancienne version pour mes projets github.
Votre lien GitHub est 404. –
Merci Thom. Bien que ce commentaire soit obsolète. Comme tout le monde, j'utilise maintenant les barres d'armature – cstar
Nous utilisons également un fichier Emake similaire. J'utilise la fonctionnalité erlang make pour exécuter des tests après une compilation réussie.
extrait de Makefile:
all: compile
compile:
erlc -o ebin +debug_info erl_make.erl
erl -pa ./ebin -eval "erl_make:make(development)" -s init stop -noshell
erl_make.erl
-module(erl_make).
-export([make/1]).
make(Mode) ->
case make:all([{d, Mode}]) of
error ->
error;
_ ->
test_suite:test()
end.
Merci pour cette excellente réponse! =) –
Vous pouvez vérifier mes Makefiles, je les ai pris de mochiweb ou quelque chose comme ça. Désolé, mais le code ont certaines parties spécifiées projet-
http://github.com/JLarky/eadc-hub/blob/master/Makefile
MARKDOWN_SOURCES=$(wildcard doc/*.md) MARKDOWN_TARGETS=$(patsubst doc/%.md,doc/html/%.html,$(MARKDOWN_SOURCES)) all: eadc boot deps eadc: ebin cd src && $(MAKE) deps: (cd deps/somedeps;$(MAKE);) docs: erlang-docs # html-docs erlang-docs: doc/edoc (cd src;$(MAKE) docs) html-docs: doc/html $(MARKDOWN_TARGETS) doc/edoc: mkdir -p doc/edoc doc/html: mkdir -p doc/html doc/html/%.html: doc/%.md (title=`grep '^# ' $ [email protected] ;\ python doc/buildtoc.py $$t ;\ markdown $$t >> [email protected] ;\ rm $$t ;\ cat doc/footer.html >> [email protected]) ebin: mkdir -p ebin clean: clean-docs (cd src;$(MAKE) clean) (cd deps/*/; $(MAKE) clean) $(RM) -r priv $(RM) ebin/*.boot ebin/*.script ebin/*crash.dump ebin/*~ src/*~ priv/*~ *~ \#*\# clean-docs: clean-html $(rm) -rf doc/edoc clean-html: rm -rf doc/html boot: ebin/eadc.boot ebin/eadc.boot: ebin/eadc.rel ebin/eadc.app erl -pa ebin -noshel -run eadc_utils make_script -run erlang halt cleandb: $(RM) -r ebin/Mnesia*
http://github.com/JLarky/eadc-hub/blob/master/support/include.mk
## -*- makefile -*- ## Erlang ERL := erl ERLC := $(ERL)c INCLUDE_DIRS := ../include $(wildcard ../deps/*/include) EBIN_DIRS := $(wildcard ../deps/*/ebin) ERLC_FLAGS := -W $(INCLUDE_DIRS:../%=-I ../%) $(EBIN_DIRS:%=-pa %) ifndef no_debug_info ERLC_FLAGS += +debug_info endif ifdef debug ERLC_FLAGS += -Ddebug endif EBIN_DIR := ../ebin DOC_DIR := ../doc/edoc EMULATOR := beam ERL_SOURCES := $(wildcard *.erl) ERL_HEADERS := $(wildcard *.hrl) $(wildcard ../include/*.hrl) ERL_OBJECTS := $(ERL_SOURCES:%.erl=$(EBIN_DIR)/%.$(EMULATOR)) ERL_DOCUMENTS := $(ERL_SOURCES:%.erl=$(DOC_DIR)/%.html) ERL_OBJECTS_LOCAL := $(ERL_SOURCES:%.erl=./%.$(EMULATOR)) APP_FILES := $(wildcard *.app) REL_FILES := $(wildcard *.rel) EBIN_FILES_NO_DOCS = $(ERL_OBJECTS) $(APP_FILES:%.app=../ebin/%.app) $(REL_FILES:%.rel=../ebin/%.rel) EBIN_FILES = $(ERL_DOCUMENTS) $(EBIN_FILES_NO_DOCS) MODULES = $(ERL_SOURCES:%.erl=%) ../ebin/%.app: %.app cp $
http://github.com/JLarky/eadc-hub/blob/master/src/Makefile
include ../support/include.mk all: $(EBIN_FILES_NO_DOCS) docs: $(ERL_DOCUMENTS) *emphasized text* debug: $(MAKE) DEBUG=-DDEBUG clean: rm -rf $(EBIN_FILES) $(PLUGINS_OBJECTS)
Je vous propose mon propre outil :) Eake ...est très similaire à ratisser de l'environnement Ruby:
http://github.com/andrzejsliwa/eake
ou
http://andrzejsliwa.com/2009/05/28/eake-narzedzie-budowania-dla-erlanga-bazujace-na-rake/
Voici par exemple eakefile
-module(eakefile). -compile([export_all]). -import(eake, [task/3, namespace/3, run_target/2, run/1]). execute() -> [ namespace(db, "test", [ task(migrate, "That is migration", fun(Params) -> io:format("in migration params: ~w", [Params]), run_target('db:rollback', []) end), task(rollback, "That is rollback", fun(_) -> io:format("in rollback"), run("ls") end) ]) ].
ce qui est par exemple en utilisant:
$ eake db:migrate $ eake db:migrate db:rollback $ eake db:migrate=[1,atom] $ eake db:migrate=name
Utilisez Sinan pour la construction et Faxien pour l'installation! Découvrez erlware.org. Ils sont bien meilleurs qu'un fichier make et facilitent la distribution. Ils sont à la fois dans le développement actif lourd et seront présentés dans: http://www.manning.com/logan/
- 1. Outil pour construire des requêtes HTTP
- 2. Acheter ou construire un outil pour Data Reporting?
- 3. Profiler/Analyseur pour Erlang?
- 4. Quel est un bon outil pour l'annotation du code?
- 5. Quel outil TFS recommanderiez-vous?
- 6. Quel est un bon outil/méthode pour trouver quels fichiers sur le disque ont été modifiés après l'exécution d'un programme?
- 7. Comment construire un programme d'assemblage x64 sous OS X?
- 8. Quel framework Java pour construire une application sociale/collaborative?
- 9. Quel est le meilleur outil d'installation pour Java?
- 10. Quel est le meilleur outil d'analyse statique pour NetBeans 6.1?
- 11. Quel outil ORM devrais-je utiliser pour le développement .Net
- 12. Quel est votre outil préféré pour l'analyse d'impact?
- 13. Quel outil puis-je utiliser pour analyser ViewState dans Asp.Net?
- 14. Outil pour analyser un fichier
- 15. Quel outil utiliser pour dessiner les grands nuages de points
- 16. Quel est le meilleur outil pour le développement d'applications Blackberry?
- 17. Quel est le meilleur outil pour maintenir la traçabilité
- 18. Quel outil est-ce - ou quelqu'un a un outil de rechange
- 19. Quel outil Java Profiling utilisez-vous et quel outil vous semble le meilleur?
- 20. Puis-je spécifier quel module ou adaptateur VCS est utilisé par un programme ou programme Luntbuild?
- 21. Quel outil puis-je utiliser pour générer un rapport d'utilisation de classe PHP pour mon application?
- 22. Ruby dans Erlang
- 23. Erlang - analyse de code
- 24. Quel est le plus facile, solution la moins chère pour construire un site E-Commerce
- 25. Quel programme crée un tableau C donné à un fichier?
- 26. Quelle langue est utile pour créer un rapport pour un programme C valide
- 27. Quel est un bon outil pour compléter le code SQL avec SQL Server 2005?
- 28. Erlang Hash Arbre
- 29. construire un robot d'indexation Web
- 30. Outil pour faire un didacticiel vidéo?
Ce n'est pas une norme en effet, mais une contribution. La marque d'Erlang est une norme car elle est incluse dans la distribution. – tuscland