8 votes

Exécuter Makefile depuis le Finder

Je me déplace souvent en utilisant le Finder dans les répertoires sources de divers projets (articles LaTeX, trucs de programmation) dont la compilation est pilotée par un Makefile . Je me demandais s'il existait un moyen simple (menu Service, Automator ou autre) d'invoquer la commande correspondante ( make ) dans le bon répertoire directoly à partir du Finder (clic droit sur quelque chose).

Je suis sous OS X 10.8.

Merci d'avance pour vos suggestions

3voto

Vous pourriez utiliser une fonction comme celle-ci :

fmake() {
  cd "$(osascript -e 'tell application "Finder"
      POSIX path of (target of Finder window 1 as alias)
  end tell' 2> /dev/null)"
  make && make install
}

Ou sauvegarder une fonction juste pour la commande cd et utiliser history-search-backward pour exécuter quelque chose comme cdf && make && make install .

Vous pouvez aussi ouvrir Automator, choisir le modèle Service, définir le type d'entrée sur aucune entrée, et ajouter une action Run AppleScript comme celle-ci :

try
    tell application "Finder"
        POSIX path of (target of Finder window 1 as alias)
    end tell
    tell application "Terminal"
        do script "cd " & quoted form of result & " && make && make install"
        activate
    end tell
end

Sans le bloc try, Automator afficherait une boîte de dialogue d'erreur si le script sort avec une erreur.

0voto

fmysky Points 1

Certes, c'est une méthode maladroite mais c'est peut-être mieux que rien :

créer un fichier texte nommé makeit.command et y mettre une ligne de texte :

make

Puis chomod le fichier 755

chmod 755 makeit.command 

Si vous voulez exécuter un make, faites-le glisser/copier dans ce dossier, puis double-cliquez dessus.

0voto

Kaydell Points 289

J'aime la réponse AppleScript de Lauri Ranta. Je travaillais sur une telle chose pour moi-même afin de pouvoir utiliser le Finder pour localiser un dossier et créer un dépôt git dans un répertoire sélectionné dans le Finder.

Je comprends que vous puissiez vouloir appeler la commande make sur un dossier également.

Il me semble qu'il serait agréable de pouvoir utiliser l'interface graphique du Finder et que vous pourriez vouloir faire beaucoup de choses avec le répertoire sélectionné.

Se connecter au répertoire sélectionné

Je pense que ce service Automator est plus général que l'émission de n'importe quel type de commande pour un répertoire à l'intérieur de l'AppleScript et il vous prépare à entrer n'importe quelle commande shell que vous voulez.

--- éditer ---

Je suis désolé, mon message ci-dessus ne répondait pas à la question initiale. Voici un lien vers un flux de travail Automator enregistré en tant que service qui exécute la commande make sur le répertoire sélectionné dans le Finder :

Run Make

J'ai essayé ce nouveau service et je ne l'ai pas aimé parce que parfois vous pouvez vouloir faire la commande shell "make" et d'autres fois vous pouvez vouloir faire la commande shell "make && make install", ou vous pouvez vouloir construire une cible différente "make fullbuild" ou autre. C'est pourquoi je pensais qu'un service appelé "Connect to Selected Directory" serait le mieux.

0voto

Igor Zelaya Points 2266

J'ai essayé d'ajouter #!/usr/bin/make -f comme la première ligne de Makefile et le rendre exécutable mais il ne s'exécute pas dans le bon dossier. J'ai donc opté pour une solution semblable à celle proposée par The-Dood.

Ouvrez un terminal et allez dans le dossier dans lequel vous avez votre projet et Makefile puis tapez ceci :

cat <<EOF > Makeit
make -C `dirname $_`
echo 'Press enter to continue'
read
EOF
chmod +x Makeit

Maintenant, en double-cliquant Makeit devrait invoquer make sur le même dossier. Vous pouvez ajouter tout autre argument lorsque vous appelez make ou modifier Makeit à volonté.

Cette solution fonctionne, mais elle n'est pas forcément très pratique car vous avez besoin d'une copie de Makeit dans chaque dossier.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X