2010-12-04 5 views
7

Lors de la compilation d'un fichier Erlang avec erlc je peux ajouter d'autres comprennent des répertoires comme si:Puis-je ajouter des répertoires include à la commande erl?

erlc -I /home/trotter/code/open-source/yaws/include src/myapp.erl 

Quand je compiler à partir de erl cependant, je ne vois pas une façon de le faire sur la ligne de commande. Au lieu de cela, je dois faire ce qui suit dans le rempl:

> compile:file("src/myapp", 
       [verbose, 
       report_errors, 
       {i,"/home/trotter/code/open-source/yaws/include"}]). 

Y at-il une meilleure façon de le faire que je ne sais pas, comme en passant un argument de ligne de commande pour Erl? Si ce n'est pas le cas, toutes les suggestions pour sécher cela que ne doivent pas exigent que je tape des chemins méchants chaque fois que je compile.

Répondre

5

Je compile rarement à partir du shell - uniquement pour les petits scripts de test avec c(foo). Ma configuration est la suivante:

J'ai une infrastructure de construction. make construit le logiciel (make est juste un emballage pour rebar ici). Je peux ensuite générer du code à partir de emacs en appuyant sur F12 lié à la commande emacs compile. En vim vous pouvez faire la même chose avec la commande :make si ma mémoire vim me sert (cela fait quelques années). Maintenant, bien sûr, cela construit le code et le lance dans un répertoire ebin.

L'étape suivante consiste à démarrer Erlang et la connaissance de la ebin dir:

erl -pa ./ebin 

ce qui signifie que toute référence au module foo va et vérifie ./ebin/foo.beam. Quand je découvre que je dois réparer du code, je le corrige dans l'éditeur, compile le code avec F12 et ensuite exécute l(foo) dans le shell qui charge le code.

Il a également l'avantage que toute erreur de compilation est maintenant sous la juridiction de l'éditeur afin que je puisse rapidement passer à l'erreur et la réparer.

+0

Ok, c'est tout à fait une meilleure solution à mon problème. Je ne savais pas que je pourrais utiliser l (foo) pour charger du code compilé. – Trotter

+0

Pour faciliter les choses, j'ai créé un fichier .erlang dans la racine du projet avec 'code: add_patha (" ./ dict ").'. Il a ajouté le chemin "dict" au début de la liste de recherche de chemin chaque fois que j'ai lancé 'erl' sur ce projet. – Carlosedp

Questions connexes