我的c/c ++项目往往有相当简单的目录结构,分离出src,include,bin等.我也倾向于在最上面的目录中有一个主makefile.当在Emacs中这样工作时,我总是必须发布M-x cd uppermost-dir,以便我的编译快捷方式按预期工作.
有没有办法让当前目录与我启动Emacs的目录相同?也就是说,当我打开文件时,我可以阻止Emacs更改其工作目录吗?
或者,对于典型的工作流程,是否存在一些关键的问题,在Emacs中只有这样的目录层次结构?
一种方法可以做到这一点:
在项目调用的根目录中创建一个文件 .dir-locals.el
每当您在目录或其子目录中打开文件时,都会读取此信息.
要备份到根文件夹并运行make作为编译命令,只需将其放在.dir-locals.el文件中即可.
((nil . ((compile-command . "cd ~/mycode/c/; make"))))
Run Code Online (Sandbox Code Playgroud)
nil 是设置局部变量的模式(nil表示任意),所以要只为C++模式这样做,你可以这样做......
((c++-mode . ((compile-command . "cd ~/mycode/c/; make"))))
Run Code Online (Sandbox Code Playgroud)
显然你可以设置一个包含更多选项的列表,例如为java文件运行ant等等.