如何在Emacs上创建/发出编译命令,所以我不需要在它和控制台之间来回切换?我通常的编译过程我想看看Emacs命令:
$ export PATH=/toolchain/gcc-linaro-arm-linux-gnueabihf-4.7/bin:$PATH
$ cd my/project
$ make CROSS_COMPILE=arm-linux-gnueabihf- all
我试图在instructions之后创建我自己的M-x compile
命令版本,但由于我不熟悉Lisp和Emacs内部组件而失败了。请注意,有问题的项目很大(即内核)有多个目录和Makefile,因此上一个链接中描述的方法(最接近的Makefile,默认目录等)不是解决方案。如果您可以将它绑定到单个键,如现代IDE上的Fx键,则可以获得奖励。
P.S。我知道有similar question,但它已经过时,不包括交叉编译问题,我希望现在有更好的解决方案。
答案 0 :(得分:2)
Ctrl U Meta x compile 应该问你要使用什么编译命令。您可以输入make CROSS_COMPILE=arm-linux-gnueabi all
否则,请在compilation-command
中配置您的~/.emacs
Emacs变量;你可能会把它变成一个文件局部变量。
您可以在~/.emacs
以下未经测试的行中加入
(load-library "compile")
(global-set-key [f12] 'recompile)
(setq compilation-command "make CROSS_COMPILE=arm-linux-gnueabihf all")
BTW,您的export PATH=
...可以添加,例如在您的~/.bashrc
中,或者您可以使用相应的make
运行精确PATH
的shell脚本,并将该脚本作为您的Emacs compilation-command
(甚至可能是"暂时",即仅在您的emacs会话中)
答案 1 :(得分:2)
您可以创建一个在特定目录中运行特定编译命令的自定义函数,如下所示:
(defun my-compile ()
(interactive)
(let ((default-directory "~/my/project"))
(compile "export PATH=/toolchain/gcc-linaro-arm-linux-gnueabihf-4.7/bin:$PATH && make CROSS_COMPILE=arm-linux-gnueabihf- all")))
然后将其绑定到一些方便的键:
(global-set-key [f12] 'my-compile)