Chạy Makefile từ Finder


8

Tôi thường đi du lịch bằng Finder trong các thư mục nguồn của các dự án khác nhau (bài viết LaTeX, công cụ lập trình) mà việc biên dịch được thí điểm bởi a Makefile. Tôi đã tự hỏi nếu có một cách đơn giản (Menu dịch vụ, Automator gì) để gọi lệnh tương ứng ( make) trong thư mục tốt directoly từ Finder (nhấp chuột phải vào một cái gì đó).

Tôi đang chạy OS X 10.8.

Cảm ơn trước sự góp ý của bạn


Không chắc chắn về 100% Finder make-ing, nhưng, bạn có thể mở cửa sổ Terminal và nhập makesau đó kéo Makefilevào Terminal để sao chép đường dẫn đến nó.
2rs2ts

1
@ 2rs2ts, nếu bạn đi theo cách này, hãy nhập make -C trước khi kéo Makefile.
lhf

@lhf À vâng, tất nhiên rồi.
2rs2ts

1
Thêm vào @ 2rs2ts, bạn có thể muốn tạo một thiết bị đầu cuối hoặc từ trình chỉnh sửa để xem các thông báo lỗi
user151019

Câu trả lời:


3

Bạn có thể sử dụng một chức năng như thế này:

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
}

Hoặc lưu một chức năng chỉ cho lệnh cd và sử dụng lịch sử tìm kiếm ngược để chạy một cái gì đó như cdf && make && make install.

Hoặc mở Automator, chọn mẫu Dịch vụ, đặt loại đầu vào thành không có đầu vào và thêm hành động Chạy AppleScript như thế này:

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

Nếu không có khối thử, Automator sẽ hiển thị hộp thoại báo lỗi nếu tập lệnh thoát có lỗi.


Bạn cũng có thể đặt stdout và std để xem lỗi hoặc ít nhất là nhắc nhở nơi ghi nhật ký lỗi
user151019

0

Phải thừa nhận rằng đây là một cách vụng về nhưng có lẽ tốt hơn là không có gì:

tạo một tệp văn bản có tên makeit.command và chỉ cần đặt một dòng văn bản vào đó:

make

Sau đó chomod tệp 755

chmod 755 makeit.command 

Nếu bạn muốn chạy một make, hãy kéo / sao chép nó vào thư mục đó và sau đó nhấp đúp vào nó.


1
Trong trường hợp đó thư mục hiện tại là gì? Tôi không nghĩ đó sẽ là nơi Makefile ở và vì vậy việc kiếm tiền có thể sẽ thất bại
user151019

0

Tôi đã thử thêm #!/usr/bin/make -fdòng đầu tiên Makefilevà làm cho nó có thể thực thi được nhưng nó không chạy trong thư mục chính xác. Vì vậy, tôi đã giải quyết một giải pháp dọc theo câu trả lời của The-Dood.

Mở một thiết bị đầu cuối và đi đến thư mục nơi bạn có dự án và Makefilesau đó nhập vào:

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

Bây giờ bấm đúp vào Makeitsẽ gọi maketrên cùng một thư mục. Bạn có thể thêm bất kỳ đối số khác khi gọi makehoặc chỉnh sửa Makeittheo ý muốn.

Giải pháp này hoạt động nhưng nó có thể không thuận tiện khủng khiếp vì bạn cần một bản sao Makeittrong mỗi thư mục.


0

Tôi thích câu trả lời AppleScript của Lauri Ranta. Tôi đã tự mình làm một việc như vậy để có thể sử dụng Finder để định vị thư mục và tạo kho git trong thư mục được chọn trong Finder.

Tôi có thể thấy nơi bạn có thể muốn gọi lệnh make trên một thư mục.

Đối với tôi, dường như thật tuyệt khi có thể sử dụng GUI của Finder và bạn có thể muốn thực hiện nhiều thứ với thư mục đã chọn.

Kết nối với thư mục đã chọn

Tôi nghĩ rằng Dịch vụ tự động này chung chung hơn là ban hành bất kỳ loại lệnh nào cho một thư mục bên trong AppleScript và nó giúp bạn sẵn sàng nhập bất kỳ lệnh shell nào mà bạn muốn.

--- biên tập ---

Tôi xin lỗi, bài viết của tôi ở trên không trả lời câu hỏi ban đầu. Dưới đây là liên kết đến luồng công việc của Trình tự động được lưu dưới dạng Dịch vụ chạy lệnh make trên thư mục được chọn trong Finder:

Chạy Make

Tôi đã thử dịch vụ mới này của tôi và tôi không thích nó vì đôi khi bạn có thể muốn thực hiện lệnh shell "make" và những lần khác bạn có thể muốn thực hiện lệnh shell "make && make install", hoặc bạn có thể muốn xây dựng một mục tiêu khác "tạo fullbuild" hoặc một cái gì đó. Đó là lý do tại sao tôi nghĩ rằng một dịch vụ có tên "Kết nối với thư mục được chọn" sẽ là tốt nhất.


Làm thế nào để trả lời câu hỏi này dường như là nhận xét chung nhưng không có câu trả lời chính xác
user151019

Tôi xin lỗi. Tôi có nghĩa là cung cấp một câu trả lời chính xác với một liên kết đến mã hoàn thành mà khi tải xuống sẽ cài đặt như một Dịch vụ.
Kaydell

Đã có một dịch vụ được cài đặt sẵn (Thiết bị đầu cuối mới trong Thư mục) thực hiện tương tự như dịch vụ thứ hai của bạn.
Lri

@ "Lauri Ranta" Cảm ơn bạn. Bạn chắc chắn có kiến ​​thức. Tôi đã thử Dịch vụ "Thiết bị đầu cuối mới trong thư mục", nó không hoạt động đối với tôi, tôi nghĩ vì tôi đã đặt thư mục mặc định trong ".bash_profile" của mình. Vì một số lý do, Dịch vụ của tôi: "Kết nối với thư mục đã chọn" hoạt động với tôi, nhưng Dịch vụ: "Thiết bị đầu cuối mới trong thư mục" sẽ mở Terminal.app, nhưng nó không đặt đúng thư mục hiện tại. Tôi nhận được một thư mục hiện tại được đặt trong ".bash_profile" của tôi.
Kaydell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.