Windows下如何配置Emacs编译模式以自动识别CL编译器
解决Emacs自动识别Visual Studio cl编译器的配置方法
不用每次手动执行vcvarsall.bat再启动Emacs,直接在Emacs配置里加代码就能搞定,两种方案选一个适合你的:
方案一:启动Emacs时自动导入VC环境变量
把这段代码放到你的Emacs配置文件(比如init.el)里,它会自动执行vcvarsall.bat并将环境变量导入Emacs,之后编译模式就能直接识别cl编译器:
;; 导入Visual Studio 2022 x64环境变量 (let* ((vcvars-path "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat") (cmd (concat "\"" vcvars-path "\" x64 && set")) (env-output (shell-command-to-string cmd)) (env-lines (split-string env-output "\n" t))) (dolist (line env-lines) (when (string-match "^\\([^=]+\\)=\\(.*\\)$" line) (setenv (match-string 1 line) (match-string 2 line)))))
原理是通过shell-command-to-string执行vcvarsall.bat后调用set命令输出所有环境变量,再把这些变量逐一设置到Emacs的环境变量中。
方案二:编译时先加载VC环境
如果不想在Emacs启动时就加载环境,也可以修改compile-command,让每次编译前先执行vcvarsall.bat:
;; 配置编译命令,先加载VC环境再编译当前项目 (setq compile-command (concat "\"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat\" x64 && cl /EHsc your_project.cpp"))
如果你的项目用makefile,把后面的cl /EHsc your_project.cpp换成对应的构建命令即可,比如nmake或者msbuild。
注意事项
- 如果你安装的VS版本不是2022 Community,或者安装路径不同,记得修改代码里的vcvars-path路径。
- 要是需要32位编译环境,把代码里的
x64换成x86就行。
内容的提问来源于stack exchange,提问作者o_luka02
相关产品推荐
相关产品推荐

