Emacs:为每个缓冲区设置编译命令

5

假设我有一个名为file.c和another.c的文件,我想分别为每个文件设置编译命令,比如:gcc -Wall -O3 -o f file.cgcc -Wall -std=c99 -o a another.c,那么如何设置gcc命令才能让编辑器每次打开它都知道如何编译?是否有与// -*-指令或类似功能相关的内容?谢谢。

2个回答

5

是的,你可以在文件中使用指令,并设置其他值。尝试在第一或第二行中使用以下内容:

// -*- compile-command: "gcc -Wall -O3 -o f file.c" -*-

然后使用C-x v重新加载文件,以使设置生效。

我有时也会在其中设置像c-indent-level: 4; c-basic-offset: 4;这样的内容。


C-x v 显然意味着 revert-buffer。对我来说不是默认绑定。 - Felipe Cortez
1
可能是模式相关的。我想我(几十年前)将编程模式设置为从文本模式派生。 - Dirk Eddelbuettel

3
你要找的是称为 文件局部变量 或有时仅称为“局部变量”的内容,格式为注释中的声明格式,详情请参见此处
除了Dirk的答案中给出的语法外,你还可以在文件末尾编写一个“局部变量”块:
/* Local Variables: */
/* compile-command:"gcc -Wall -O3 -o f file.c" */
/* End: */

您可以使用交互式函数add-file-local-variable来帮助维护此列表,如果您不想手动输入每个条目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接