我经常在各种项目(LaTeX文章,编程资料)的源目录中使用Finder进行旅行,该项目的编译工作由a进行Makefile
。我想知道是否有一种简单的方法(Service菜单,Automator等等)make
直接从Finder(右键单击某些东西)直接在好目录中调用相应的命令()。
我正在运行OS X 10.8。
预先感谢您的建议
make -C
在拖动之前输入Makefile
。
我经常在各种项目(LaTeX文章,编程资料)的源目录中使用Finder进行旅行,该项目的编译工作由a进行Makefile
。我想知道是否有一种简单的方法(Service菜单,Automator等等)make
直接从Finder(右键单击某些东西)直接在好目录中调用相应的命令()。
我正在运行OS X 10.8。
预先感谢您的建议
make -C
在拖动之前输入Makefile
。
Answers:
您可以使用如下函数:
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命令保存一个函数,然后使用history-search-backward运行类似的命令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
如果没有try块,则Automator将在脚本错误退出时显示错误对话框。
承认,这是一种笨拙的方法,但总比没有好:
创建一个名为makeit.command的文本文件,然后在其中放入一行文本:
make
然后修改文件755
chmod 755 makeit.command
如果要运行make,请将其拖动/复制到该文件夹,然后双击它。
我尝试添加#!/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
每个文件夹中都需要一个副本。
我喜欢Lauri Ranta的AppleScript答案。我自己正在做这样的事情,以便能够使用Finder定位文件夹并在Finder中选择的目录中创建git存储库。
我可以看到您可能还要在文件夹上调用make命令的位置。
在我看来,能够使用Finder的GUI很好,并且您可能想对所选目录做很多事情。
我认为,此Automator Service比对AppleScript内部目录发出任何类型的命令更通用,它使您可以输入想要的任何shell命令。
-编辑-
抱歉,我上面的帖子没有回答原始问题。这是指向另存为服务的Automator工作流程的链接,该工作流程在Finder中选择的目录上运行make命令:
我尝试了我的这项新服务,但我不喜欢它,因为有时您可能想要执行shell命令“ make”,而有时您可能想要执行shell命令“ make && make install”,或者您可能想要建立一个不同的目标“ make fullbuild”之类的东西。这就是为什么我认为最好的服务是“连接到所选目录”。
make
-ing,但是,您可以打开“终端”窗口并键入,make
然后将拖入Makefile
终端以将路径复制到该终端。