Esegui Makefile dal Finder


8

Viaggio spesso usando Finder nelle directory dei sorgenti di vari progetti (articoli LaTeX, materiale di programmazione) per i quali la compilazione è pilotata da un Makefile. Mi chiedevo se esiste un modo semplice (menu Servizio, Automator qualunque) per invocare il comando corrispondente ( make) nella buona directory direttamente da Finder (tasto destro del mouse su qualcosa).

Sto eseguendo OS X 10.8.

Grazie in anticipo per i tuoi suggerimenti


Non sei sicuro del 100% del Finder make, ma puoi aprire una finestra del Terminale e digitare e maketrascinare Makefilenel Terminale per copiare il percorso su di esso.
ore 2

1
@ 2rs2ts, se vai in questo modo, digita make -C prima di trascinare il Makefile.
lhf,

@lhf Ah sì, certo.
ore 2

1
Aggiungendo a @ 2rs2ts probabilmente si desidera la creazione in un terminale o da un editor per visualizzare i messaggi di errore
user151019

Risposte:


3

È possibile utilizzare una funzione come questa:

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
}

Oppure salva una funzione solo per il comando cd e usa history-search-backward per eseguire qualcosa del genere cdf && make && make install.

Oppure apri Automator, scegli il modello di servizio, imposta il tipo di input su nessun input e aggiungi un'azione Esegui AppleScript in questo modo:

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

Senza il blocco try Automator mostrerebbe una finestra di dialogo di errore se lo script esce con un errore.


Potresti anche reindirizzare lo stdout e lo std per vedere gli errori o almeno chiedere dove si trova il registro degli errori
user151019

0

Ammesso, questo è un modo goffo ma forse meglio di niente:

crea un file di testo chiamato makeit.command e inserisci solo una riga di testo:

make

Quindi chomod il file 755

chmod 755 makeit.command 

Se si desidera eseguire un make, trascinarlo / copiarlo in quella cartella e fare doppio clic su di esso.


1
In tal caso qual è la directory corrente? Non penso che sarà dove si trova il Makefile e quindi probabilmente il make fallirà
user151019

0

Ho provato ad aggiungere #!/usr/bin/make -fcome prima riga Makefilee renderlo eseguibile ma non viene eseguito nella cartella corretta. Quindi ho optato per una soluzione sulla falsariga della risposta di The-Dood.

Apri un terminale e vai alla cartella in cui hai proiettato e Makefilequindi digita questo:

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

Ora il doppio clic Makeitdovrebbe invocare makenella stessa cartella. È possibile aggiungere qualsiasi altro argomento quando si chiama makeo si modifica Makeita piacimento.

Questa soluzione funziona ma potrebbe non essere estremamente conveniente perché è necessaria una copia di Makeitciascuna cartella.


0

Mi piace la risposta AppleScript di Lauri Ranta. Stavo lavorando su una cosa del genere per poter usare il Finder per individuare una cartella e creare un repository git in una directory selezionata nel Finder.

Posso vedere dove potresti voler chiamare il comando make anche su una cartella.

Mi sembra che sarebbe bello poter usare la GUI del Finder e che potresti voler fare molte cose con la directory selezionata.

Connetti alla directory selezionata

Penso che questo servizio di automazione sia più generale che emettere qualsiasi tipo di comando per una directory all'interno di AppleScript e ti prepara a inserire qualunque comando shell tu voglia.

--- modificare ---

Mi dispiace, il mio post sopra non ha risposto alla domanda originale. Ecco un collegamento a un flusso di lavoro di Automator salvato come servizio che esegue il comando make nella directory selezionata nel Finder:

Esegui Make

Ho provato questo mio nuovo servizio e non mi è piaciuto perché a volte potresti voler fare il comando shell "make" e altre volte potresti voler fare il comando shell "make && make install", o potresti voler costruire un obiettivo diverso "make fullbuild" o qualcosa del genere. Ecco perché pensavo che un servizio chiamato "Connetti alla directory selezionata" sarebbe il migliore.


In che modo questa risposta alla domanda sembra essere commenti generali ma nessuna risposta esatta
user151019

Mi dispiace. Intendevo fornire una risposta esatta con un collegamento al codice finito che una volta scaricato sarebbe stato installato come servizio.
Kaydell,

Esiste già un servizio preinstallato (Nuovo terminale nella cartella) che fa la stessa cosa del secondo servizio.
Lri,

@ "Lauri Ranta" Grazie. Sei sicuro di essere informato. Ho provato il servizio "Nuovo terminale nella cartella" che non ha funzionato per me, penso perché ho impostato una directory predefinita nel mio ".bash_profile". Per qualche motivo, il mio servizio: "Connetti alla directory selezionata" funziona per me, ma il servizio: "Nuovo terminale nella cartella" apre Terminal.app, ma non imposta correttamente la directory corrente. Ottengo una directory corrente che è impostata nel mio ".bash_profile".
Kaydell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.