gpt4 book ai didi

c++ - Emacs 支持 VS2012 构建

转载 作者:行者123 更新时间:2023-11-28 02:44:26 26 4
gpt4 key购买 nike

我正在尝试设置我的 .emacs,以便我可以从 Emacs 内部构建 VS2012 项目。

我按照 Emacswiki 上的说明进行操作为此。它过去对我有用 VS2005。

问题是这个新版本的 VS 在每个错误/警告行的前面附加了一个 CPU 名称,emacs 的 C++ 编译器解析变得困惑并认为这是文件名的一部分。例如错误:

5>c:\dev\proj\my_class.h(35): warning C4100: 'command' : unreferenced formal parameter (my_class.cpp)

当访问时出现“下一个错误”,而不是调出文件和行,而是给我提示:

Find this error in (default 5>my_class.h): ~/dev/proj/

我可以在我的 .emacs(或者可能是 C 和 C++ 模式)中做一些调整来解决这个问题吗?或者,是否有更新版本的 Emacs(或模式 .el 文件)可以更好地处理 VS2012?我目前正在使用 GNU Emacs 24.2.1

最佳答案

我想我已经找到了。

问题不是 GNU Emacs 没有尝试支持 VS2012 编译器消息,问题是它在支持中有几个错误(在 24.2.1 中)。

一些背景知识:Emacs 用来识别错误和警告的所有正则表达式都在一个变量中,该变量的名称非常冗余 compilation-error-regexp-alist-alist。这是在 compile.el elisp 文件中声明的。

主要问题是使用了在列表中找到的第一个匹配项,而不是最大的。 edg-1(Edison Design Group 的 LLVM 前端)列表中有一个正则表达式恰好匹配 VS2012 错误和警告。它在列表中比 msft 更早,因此被使用。 Presto:错误的目录匹配。

这个问题在 this thread 中讨论过在 emacs 开发列表上,和 fixed with a patch 2012 年 10 月 14 日。

有两个相当简单的解决方案。

  1. 升级到 Emacs 24.3 或更高版本。这应该有补丁。
  2. (方便)编辑您的 lisp/progmodes/compile.el 文件。在 compilation-error-regexp-alist-alist 中找到“msft”条目,并将其移动到有问题的“edg-1”条目前面的某个位置。当你这样做的时候,你可能想在反斜杠之前的第一个正则表达式行的末尾添加一个 ? (参见 diff link )。然后字节编译文件并重启emacs。

关于c++ - Emacs 支持 VS2012 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com