在Emacs中更改默认编译器?

时间:2013-04-02 23:35:32

标签: c gcc emacs makefile clang

我在Emacs中使用M-x compile来编译我的C代码,然后启动make -k并允许我编译代码。我希望在安装它之后使用Clang(或者可以想象为GCC 4.8)作为默认编译器。我有cc别名为clang -Wall -Werror -std=c99 -ggdb -O0,虽然这从Emacs外部的命令行调用Clang,但从Emacs中调用M-x compile仍然似乎是cc的别名GCC 4.7版本就是我安装的。我希望利用Clang(和GCC 4.8)提供的更丰富,更易理解的错误和警告信息,但不希望为我写的每个简短的学生级程序创建单独的makefile,因为我目前正在通过K& R包括解决练习。

如何说服Emacs M-x compilemake -k应该调用Clang(或GCC 4.8)而不是旧版本的GCC?

4 个答案:

答案 0 :(得分:8)

这不是emacs,而是make。它默认使用环境变量CC,后者默认为gcc。只需在启动emacs之前运行它(假设您使用的是Unix):

$ export CC=clang

或者,使用直接指定CC的makefile。

答案 1 :(得分:2)

您可以编写一个makefile,并在编译行中显式使用clang。

这样的事情会起作用:

CC=clang
CFLAGS= -Wall -Werror -std=c99 -ggdb -O0

%: %.c
&#9$(CC) $(CFLAGS) $^ -o $@

请注意,最后一行需要以制表符开头才能实际运作。

答案 2 :(得分:1)

假设在makefile中使用$(CC)编译代码,可以执行以下操作之一:

  • 执行M-x compile时,您可以将编译命令更改为CC=clang make -k

  • .emacs文件中添加以下行:

    (setq compile-command "CC=clang make -k")

答案 3 :(得分:0)

您也可以在没有make的情况下执行此操作。 @Lazylabs提到您可以更改compile-command的值。要使其特定于模式,请将其添加到您的Emacs配置中:

(add-hook 'c-mode-hook
      (lambda ()
        (setq compile-command 
              (concat "clang -Wall -Werror -std=c99 -ggdb -O0" buffer-file-name))))

默认使用当前文件名。

相关问题