【发布时间】:2011-05-31 06:14:12
【问题描述】:
所以,假设我有一个文件 file.c 和一个文件 anothr.c。我想分别为每个文件设置编译命令,例如:gcc -Wall -O3 -o f file.c 和gcc -Wall -std=c99 -o a another.c。如何为该缓冲区设置gcc 命令,以便每次打开它时,它都知道如何编译它? // -*- 指令或类似的东西有什么东西吗?谢谢。
【问题讨论】:
标签: emacs
所以,假设我有一个文件 file.c 和一个文件 anothr.c。我想分别为每个文件设置编译命令,例如:gcc -Wall -O3 -o f file.c 和gcc -Wall -std=c99 -o a another.c。如何为该缓冲区设置gcc 命令,以便每次打开它时,它都知道如何编译它? // -*- 指令或类似的东西有什么东西吗?谢谢。
【问题讨论】:
标签: emacs
根据here 中描述的注释内声明格式,您要查找的内容称为file local variables,或者有时只是“局部变量”。
除了Dirk's answer 中给出的语法之外,您还可以在文件末尾写一个“局部变量”块:
/* Local Variables: */
/* compile-command:"gcc -Wall -O3 -o f file.c" */
/* End: */
如果您不想手动输入每个条目,可以使用交互功能 add-file-local-variable 来帮助维护此列表。
【讨论】:
是的,您可以在文件中使用该指令,也可以设置其他值。在第一或第二行试试这个:
// -*- 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。对我来说不是默认绑定。