Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emacs: set compilation command per-buffer

Tags:

emacs

so, suppose I have a file file.c, and a file anothr.c. I would like to set the compilation command for each of those files separately, say: gcc -Wall -O3 -o f file.c, and gcc -Wall -std=c99 -o a another.c. How can I set the gcc command for that buffer so that every time I open it, it knows how to compile it? Is there something with the // -*- directive or something like that? Thanks.

like image 364
Dervin Thunk Avatar asked Feb 26 '23 12:02

Dervin Thunk


2 Answers

Yes, you can use the directive in the file, and also set other value. Try this in line one or two:

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

and then re-load the file with C-x v so that the setting takes effect.

I sometimes set things like c-indent-level: 4; c-basic-offset: 4; in there too.

like image 118
Dirk Eddelbuettel Avatar answered Mar 06 '23 20:03

Dirk Eddelbuettel


What you're looking for are called file local variables, or sometimes just "local variables", per the in-comment declarative format described here.

In addition to the syntax given in Dirk's answer, you can write a "local variables" block at the end of your file:

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

You can use the interactive function add-file-local-variable to help maintain this list if you don't want to type each entry manually.

like image 37
seh Avatar answered Mar 06 '23 20:03

seh