Запустіть Makefile з Finder


8

Я часто подорожую за допомогою Finder у вихідних довідниках різних проектів (статті LaTeX, програми програмування), для яких компіляція описується a Makefile. Мені було цікаво, чи є простий спосіб (сервісне меню, автоматизатор що завгодно) викликати відповідну команду ( make) у хорошому каталозі безпосередньо з Finder (клацніть правою кнопкою миші щось).

У мене працює ОС X 10.8.

Заздалегідь дякую за ваші пропозиції


Не впевнений у 100-відсотковому пошуку make, але ви можете відкрити вікно терміналу та ввести, makeа потім перетягнути його Makefileв Термінал, щоб скопіювати шлях до нього.
2rs2ts

1
@ 2rs2ts, якщо ви йдете цим шляхом, введіть make -C перед перетягуванням Makefile.
lhf

@lhf Ага так, звичайно.
2rs2ts

1
Додавши до @ 2rs2ts, ви, мабуть, хочете, щоб make в терміналі чи від редактора бачили повідомлення про помилки
user151019

Відповіді:


3

Ви можете використовувати таку функцію:

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
}

Або збережіть функцію лише для команди cd і використовуйте історію-пошук назад, щоб запустити щось на кшталт cdf && make && make install.

Або відкрийте Automator, виберіть шаблон служби, встановіть тип вводу без введення та додайте дію Виконати AppleScript так:

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

Без блоку спробу Automator показав би діалог помилок, якщо сценарій закінчується з помилкою.


Ви також можете передати stdout та std, щоб побачити помилки або принаймні підказати, де журнал помилок
user151019

0

Зізнається, це незграбний спосіб, але, можливо, краще, ніж нічого:

створіть текстовий файл на ім'я makeit.command і просто вставте в нього один рядок тексту:

make

Потім підготуйте файл 755

chmod 755 makeit.command 

Якщо ви хочете запустити марку, перетягніть її / скопіюйте у цю папку та двічі клацніть її.


1
У такому випадку, що є поточним каталогом? Я не думаю, що це буде де Makefile, і тому, мабуть, не вдасться
користувач151019

0

Я спробував додати #!/usr/bin/make -fяк перший рядок Makefileі зробити його виконуваним, але він не працює у правильній папці. Тож я вирішив знайти рішення відповідно до відповіді The-Dood.

Відкрийте термінал і перейдіть до папки, у якій ви проектували проект, і Makefileвведіть це:

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

Тепер подвійне клацання Makeitповинно викликати makeту саму папку. Ви можете додати будь-які інші аргументи, коли телефонуєте makeабо редагуєте Makeitза бажанням.

Це рішення працює, але це може бути не дуже зручно, оскільки вам потрібна копія Makeitв кожній папці.


0

Мені подобається відповідь AppleScript Лаурі Ранта. Я працював над такою справою для себе, щоб мати можливість використовувати Finder, щоб знайти папку та створити сховище git у каталозі, вибраному в Finder.

Я бачу, куди ви також можете зателефонувати команді make у папку.

Мені здається, було б непогано мати можливість користуватися графічним інтерфейсом Finder і що ви, можливо, захочете зробити багато справ із вибраним каталогом.

Підключіться до вибраного каталогу

Я думаю, що ця служба Автоматизатора є більш загальною, ніж видача будь-яких команд для каталогу всередині AppleScript, і вона дозволяє вам вводити будь-яку команду оболонки, яку ви хочете.

--- редагувати ---

Вибачте, моя публікація вище не відповіла на початкове запитання. Ось посилання на робочий процес Автоматизатора, збережений як Служба, яка виконує команду make в каталозі, вибраному в Finder:

Виконати Make

Я спробував цю нову мою службу, і мені це не сподобалось, тому що іноді вам може знадобитися виконувати команду оболонки "make", а інший раз ви можете виконати команду shell "make && make install", або ви можете побудувати іншу ціль "зробити повноцінний" чи щось таке. Ось чому я думав, що найкращою буде послуга під назвою "Підключитися до вибраного каталогу".


Як це відповідає на питання, схоже, це загальні коментарі, але точної відповіді немає
користувач151019

Мені шкода. Я мав намір надати точну відповідь із посиланням на готовий код, який при завантаженні встановиться як Служба.
Kaydell

Уже є попередньо встановлена ​​послуга (Новий термінал у папці), яка робить те саме, що і ваша друга служба.
Лрі

@ "Lauri Ranta" Дякую Ви впевнені, що знаєте. Я спробував службу "Новий термінал у папці", це не спрацювало для мене, я думаю, тому що я встановив каталог за замовчуванням у своєму ".bash_profile". Чомусь моя служба: "Підключитися до вибраної директорії" працює для мене, але Сервіс: "Новий термінал у папці" відкриває Terminal.app, але він не встановлює поточний каталог правильно. Я отримую поточний каталог, який встановлений у моєму ".bash_profile".
Kaydell
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.