You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:08:15