เรียกใช้ Makefile จาก Finder


8

ฉันมักจะเดินทางโดยใช้ Finder ในไดเรกทอรีแหล่งที่มาของโครงการต่างๆ (บทความน้ำยาง, การเขียนโปรแกรมสิ่ง) Makefileที่รวบรวมเป็นคนขับโดย ฉันสงสัยว่ามีวิธีง่ายๆ (เมนูบริการ Automator อะไรก็ตาม) เพื่อเรียกใช้คำสั่งที่สอดคล้องกัน ( make) ในไดเรกทอรีที่ดีจากไดเรกทอรี Finder (คลิกขวาที่บางสิ่งบางอย่าง)

ฉันใช้ OS X 10.8

ขอบคุณล่วงหน้าสำหรับคำแนะนำของคุณ


ไม่แน่ใจเกี่ยวกับตัวค้นหา 100% makeแต่คุณสามารถเปิดหน้าต่างเทอร์มินัลmakeแล้วพิมพ์จากนั้นลากMakefileเข้าสู่เทอร์มินัลเพื่อคัดลอกพา ธ
2rs2ts

1
@ 2rs2ts ถ้าคุณไปทางนี้พิมพ์ก่อนที่จะลากmake -C Makefile
lhf

@ lhf Ah ใช่แน่นอน
2rs2ts

1
การเพิ่มใน @ 2rs2ts คุณอาจต้องการสร้างในเทอร์มินัลหรือจากตัวแก้ไขเพื่อดูข้อความแสดงข้อผิดพลาด
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 เลือกเทมเพลตบริการกำหนดประเภทอินพุตเป็นไม่มีอินพุตและเพิ่มแอคชั่น Run 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 จะแสดงกล่องโต้ตอบข้อผิดพลาดหากสคริปต์ออกจากข้อผิดพลาด


นอกจากนี้คุณยังสามารถ
ไพพ์

0

ยอมรับว่านี่เป็นวิธีที่เงอะงะ แต่อาจดีกว่าไม่มีอะไร:

สร้างไฟล์ข้อความชื่อ makeit.command และใส่ข้อความหนึ่งบรรทัดลงไป:

make

จากนั้น chomod ไฟล์ 755

chmod 755 makeit.command 

หากคุณต้องการเรียกใช้ make ให้ลาก / คัดลอกไปยังโฟลเดอร์นั้นแล้วคลิกสองครั้ง


1
ในกรณีนี้ไดเรกทอรีปัจจุบันคืออะไร ฉันไม่คิดว่ามันจะเป็นที่ Makefile อยู่และดังนั้นการทำอาจจะล้มเหลว
user151019

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 ของ Lauri Ranta ฉันกำลังทำงานกับสิ่งนี้เพื่อให้ตัวเองสามารถใช้ Finder เพื่อค้นหาโฟลเดอร์และสร้างที่เก็บ git ในไดเรกทอรีที่เลือกใน Finder

ฉันสามารถดูตำแหน่งที่คุณอาจต้องการเรียกใช้คำสั่ง make บนโฟลเดอร์ได้เช่นกัน

ดูเหมือนว่าฉันจะดีที่ได้ใช้ Finder's GUI และคุณอาจต้องการทำสิ่งต่างๆมากมายด้วยไดเรกทอรีที่เลือก

เชื่อมต่อกับไดเรกทอรีที่เลือก

ฉันคิดว่า Automator Service นี้กว้างกว่าการออกคำสั่งใด ๆ สำหรับไดเรกทอรีภายใน AppleScript และทำให้คุณพร้อมที่จะป้อนคำสั่งเชลล์ใด ๆ ที่คุณต้องการ

--- แก้ไข ---

ฉันขอโทษโพสต์ของฉันไม่ตอบคำถามเดิม นี่คือลิงค์ไปยังเวิร์กโฟลว์ Automator ที่บันทึกเป็นบริการที่รันคำสั่ง make บนไดเร็กทอรีที่เลือกใน Finder:

Run Make

ฉันลองใช้บริการใหม่ของฉันและฉันไม่ชอบเพราะบางครั้งคุณอาจต้องการทำคำสั่งเชลล์ "ทำ" และบางครั้งคุณอาจต้องการทำคำสั่งเชลล์ "ทำ && ทำการติดตั้ง" หรือคุณอาจต้องการ สร้างเป้าหมายที่แตกต่าง "สร้างฟูลด์" หรืออะไรบางอย่าง นั่นเป็นเหตุผลที่ฉันคิดว่าบริการที่เรียกว่า "เชื่อมต่อกับไดเรกทอรีที่เลือก" จะดีที่สุด


วิธีนี้ตอบคำถามที่ปรากฏเป็นความคิดเห็นทั่วไป แต่ไม่มีคำตอบที่แน่นอน
user151019

ฉันขอโทษ. ฉันตั้งใจจะให้คำตอบที่ถูกต้องพร้อมลิงก์ไปยังโค้ดที่เสร็จสิ้นซึ่งเมื่อดาวน์โหลดแล้วจะติดตั้งเป็นบริการ
Kaydell

มีบริการที่ติดตั้งไว้ล่วงหน้าแล้ว (New Terminal at Folder) ที่ทำหน้าที่เหมือนกับบริการที่สองของคุณ
Lri

@ "Lauri Ranta" ขอบคุณ คุณแน่ใจว่ามีความรู้ ฉันลองใช้บริการ "New Terminal at Folder" มันไม่ทำงานสำหรับฉันฉันคิดว่าเพราะฉันตั้งค่าไดเรกทอรีเริ่มต้นใน ".bash_profile" ของฉัน ด้วยเหตุผลบางอย่างบริการของฉัน: "เชื่อมต่อกับไดเรกทอรีที่เลือก" ใช้งานได้สำหรับฉัน แต่บริการ: "เทอร์มินัลใหม่ที่โฟลเดอร์" เปิด Terminal.app แต่ไม่ได้ตั้งไดเรกทอรีปัจจุบันอย่างถูกต้อง ฉันได้รับไดเรกทอรีปัจจุบันที่ตั้งค่าใน ".bash_profile" ของฉัน
Kaydell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.