Makefile'ı Finder'dan çalıştırın


8

Sık sık derleme a tarafından işletilen çeşitli projenin (LaTeX makaleleri, programlama şeyler) kaynak dizinlerinde Finder kullanarak seyahat Makefile. Ben makeFinder (iyi bir şey sağ tıklayın) iyi dizin directoly karşılık gelen komutu ( ) çağırmak için basit bir yolu (Service menüsü, Automator ne olursa olsun) olup olmadığını merak ediyordum .

OS X 10.8 kullanıyorum.

Önerileriniz için şimdiden teşekkür ederiz


Yaklaşık% 100 Finder make-ing'den emin değilsiniz, ancak bir Terminal penceresi açıp yolu yazıp Terminal'e makesürükleyerek Makefileyolu kopyalayabilirsiniz.
2rs2ts

1
@ 2rs2ts, bu şekilde giderseniz, make -C sürüklemeden önce yazın Makefile.
lhf

@lhf Ah evet, elbette.
2rs2ts

1
@ 2rs2ts'e eklediğinizde, muhtemelen bir terminalde veya bir editörden
yapımın

Yanıtlar:


3

Bunun gibi bir işlev kullanabilirsiniz:

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
}

Ya da sadece cd komutu için bir işlev kaydedin ve benzer bir şey çalıştırmak için geçmiş-geriye arama özelliğini kullanın cdf && make && make install.

Veya Automator'ı açın, Hizmet şablonunu seçin, giriş türünü giriş yok olarak ayarlayın ve şöyle bir AppleScript Çalıştır eylemi ekleyin:

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

Try block olmadan, komut dosyası bir hata ile çıkarsa Automator bir hata iletişim kutusu gösterecektir.


Hata günlüğü nerede olduğunu da boru stdout'u ve std hataları ya da en azından istemi görmek olabilir
user151019

0

Kabul etti, bu beceriksiz bir yol ama belki de hiç yoktan iyidir:

makeit.command adlı bir metin dosyası oluşturun ve içine sadece bir satır metin koyun:

make

Sonra 755 dosyasını chomod

chmod 755 makeit.command 

Bir marka oluşturmak istiyorsanız, onu o klasöre sürükleyin / kopyalayın ve ardından çift tıklayın.


1
Bu durumda geçerli dizin nedir? Ben Makefile nerede olacağını sanmıyorum ve böylece yapmak muhtemelen başarısız
user151019

0

#!/usr/bin/make -fİlk satırı olarak ekleme Makefileve yürütülebilir hale getirmek çalıştı ama doğru klasörde çalışmıyor. Bu yüzden The-Dood'un cevabı boyunca bir çözüm bulmaya karar verdim.

Bir terminal açın ve yansıttığınız klasöre gidin ve şunu Makefileyazın:

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

Şimdi çift tıklamak aynı klasöre Makeitçağırmalıdır make. İstediğiniz zaman çağrı yaparken makeveya düzenlerken başka argümanlar ekleyebilirsiniz Makeit.

Bu çözüm çalışır, ancak Makeither klasörde bir kopyasına ihtiyacınız olduğu için çok uygun olmayabilir .


0

Lauri Ranta'nın AppleScript yanıtını seviyorum. Kendimi için bir klasör bulmak ve Finder'da seçilen bir dizinde bir git deposu oluşturmak için Finder kullanabilmek için böyle bir şey üzerinde çalışıyordu.

Bir klasörde de make komutunu aramak isteyebileceğinizi görebiliyorum.

Bana öyle geliyor ki Finder'ın GUI'sini kullanmanın iyi olacağı ve seçilen dizinde bir çok şey yapmak isteyebileceğiniz.

Seçilen Dizine Bağlan

Bu Automator Hizmetinin, AppleScript içindeki bir dizin için her türlü komutu yayınlamaktan daha genel olduğunu ve sizi istediğiniz kabuk komutunu girmeye hazır hale getirdiğini düşünüyorum.

--- Düzenle ---

Üzgünüm, yukarıdaki yazım orijinal soruya cevap vermedi. Aşağıda, Finder'da seçilen dizinde make komutunu çalıştıran bir Hizmet olarak kaydedilen Automator iş akışına bir bağlantı bulunmaktadır:

Marka Yap

Bu yeni hizmetimi denedim ve hoşuma gitmedi çünkü bazen kabuk komutunu "make" yapmak isteyebilirsiniz ve diğer zamanlarda kabuk komutunu "make && make install" yapmak isteyebilirsiniz veya yapmak isteyebilirsiniz farklı bir hedef oluşturmak "tam bina yapmak" falan. Bu yüzden "Seçilen Dizine Bağlan" adlı bir hizmetin en iyi olacağını düşünüyordum.


Bu nasıl genel yorum gibi görünüyor soruya cevap ama kesin bir cevap yok
user151019

Üzgünüm. İndirildiğinde bir Hizmet olarak yüklenecek olan bitmiş koda bir bağlantı ile kesin bir cevap sağlamak istedim.
Kaydell

Önceden yüklenmiş bir hizmet (Klasörde Yeni Terminal) zaten ikinci hizmetinizle aynı şeyi yapıyor.
Lri

@ "Lauri Ranta" Teşekkür ederim. Kesinlikle bilgili. Hizmet benim "işe yaramadı" Klasörde Yeni Terminal "denedim, çünkü benim" .bash_profile "varsayılan bir dizin ayarladığım için. Nedense, Hizmetim: "Seçili Dizine Bağlan" benim için çalışıyor, ancak Hizmet: "Klasördeki Yeni Terminal" Terminal.app dosyasını açıyor, ancak geçerli dizini doğru ayarlamıyor. ".Bash_profile" dosyamda ayarlanmış geçerli bir dizin alıyorum.
Kaydell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.