57 votes

Sous-répertoires et Makefiles

Je pense que c'est une question qui a été posée plusieurs fois mais je ne trouve pas le droit de le faire.

- Je avoir la structure suivante:

project/
project/Makefile
project/code
project/code/*.cc
project/code/Makefile

Quand je suis dans le répertoire de projet "/code " et appellent "faire project_code" mon code compile correctement.

Je tiens à le faire quand je suis en projet"/", tout en appelant "faire project_code" comme si j'étais au projet "/code".

Le makefile "projet/Makefile" contiennent d'autres règles (telles que "installer") et de quelques règles de compilation comme si j'étais au projet "/code". Et pour cela, je demande votre aide... Merci.

81voto

Justin Ardini Points 6273

Le moyen le plus simple est de faire:

 CODE_DIR = code

.PHONY: project_code

project_code:
       $(MAKE) -C $(CODE_DIR)
 

La règle .PHONY signifie que project_code n'est pas un fichier à construire, et l'indicateur -C indique un changement dans le répertoire (équivalent à l'exécution de cd code avant d'appeler make ). Vous pouvez utiliser la même approche pour appeler d'autres cibles dans le fichier Makefile code .

Par exemple:

 clean:
       $(MAKE) -C $(CODE_DIR) clean
 

1voto

Essayez de mettre cette règle dans le projet / Makefile comme ceci (pour GNU make):

.PHONY: code_projet
code de projet:
       cd code && make

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X