【问题标题】:Trying to compile and debug C++ from Vim尝试从 Vim 编译和调试 C++
【发布时间】:2010-10-13 23:01:45
【问题描述】:

我一直在使用 Windows XP 上的 Code::Blocks 学习 C++ 和 Allegro,最近想学习 Vim。但是,我不知道如何“手动”编译程序(即不使用 IDE)。

为了从 Vim 中编译,我已经将 makeprg 设置为 gcc,但我知道我还需要一个 makefile。那是什么,我该怎么写?是不是有了makefile我就可以使用Allegro之类的库了?

另外,我非常喜欢 CB 调试器(我正在使用 gdb)。是否可以用 Vim 做类似的事情?

谢谢。

【问题讨论】:

  • 如果你真的想学习在没有 IDE 的情况下编译程序(或生活!)——我认为这很棒——我建议从 ISN'T Windows 开始,即使你计划搬回那里。

标签: windows vim debugging makefile compilation


【解决方案1】:

我不确定是否要调试,但我知道一种编译和运行当前程序的简单方法,因为我编写了一个小型 vim 插件来执行此操作。

http://pastebin.com/qc5Zp2P7

假设您使用的是 g++ 编译器。如果没有,只需将名称更改为您正在使用的编译器。将此文件保存到安装 vim/ftplugin/cpp.vim 的任何位置

为了编译和运行当前打开的程序,只需在非编辑模式下输入 shift-e 即可。

【讨论】:

    【解决方案2】:

    要将 vim 与 devenv 集成,您可以使用 Visual Studio 中的 devenv 在 vi​​m 中编译项目。命令如下:

    Devenv SolutionName /build SolnConfigName [/project ProjName [/projectconfig ProjConfigName]]
    

    通常,devenv 应该位于 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE。将其设置为环境路径以使其可从 vim 调用。我们还需要让 vim 识别命令行构建工具 devenv 抛出的错误信息。只需将以下几行放入您的 vimrc 中:

    " Quickfix mode: command line devenv error format
    au FileType cpp set makeprg=devenv.com\ /Build\ Debug\ *[SolutionName]*
    au FileType cpp set errorformat=\ %#%f(%l)\ :\ %#%t%[A-z]%#\ %m
    

    然后你可以使用 :make 从 vim 编译和构建程序。

    【讨论】:

      【解决方案3】:

      只要你安装了 GNU-make(windows 下使用 cygwin 或 mingw),你就不需要为单文件项目编写 makefile。只需在 vim 中运行 :make 即可。

      如果您的项目由多个文件组成,那么您将不得不编写一个 makefile(或 scons、aap、(b)jam、ant 等的任何等效文件),然后调整您的 &makeprg,然后最后从 vim 调用:make。请参阅vimtips 中的相关类别。您当然可以像运行任何其他外部工具一样运行编译器,但您会失去跳转到错误行的可能性。

      注意:如果你使用的是 win32 版本的 vim 和 gcc-cygwin,你需要翻译得到的错误信息。我曾经为此维护一个 perl 脚本,现在它是 bigger suite 的一部分(仍处于测试阶段)

      关于调试的问题,暂时不能在windows下的vim中完成。目前唯一可以集成的调试器是gdb,但仅限linux下;请参阅 pyclewn (.sf.net) 项目。

      【讨论】:

        【解决方案4】:

        您不一定需要 Makefile,但它是在类 UNIX 系统上编译代码的首选(并且可能是最明智的)方式。

        我不知道 GNU Make 是否有 Windows 端口,但你应该可以在 Cygwin 下运行它。

        要了解有关 GNU Make 和 Makefile 的更多信息:

        另外,请参阅这个问题:compile directly from vim

        强制编辑:我不使用 Windows 或 Cygwin。您可能想在该部门使用epochwolf's advice

        【讨论】:

        • NOOOooo...不惜一切代价避免使用cygwin。它速度慢、丑陋,而且与原生 Windows 应用程序相比没有任何优势。如果你想在 windows 上使用 gcc 和相关工具,你需要 'mingw' 和 'msys'。它们还包含一个原生版本的 make。
        • 嘿,我只是说。我不知道 Cygwin 是否好用,我不使用 Windows。 =)
        【解决方案5】:

        EDIT1:一些您可能会觉得有用的书签:

        GNU make tutorial(这个使用 gcc 和 make,所以它应该就在你的胡同里)

        Another one

        Win port Can 提到的一些 GNU 实用程序;我个人使用这些,在 Windows 平台上没有任何问题。


        是的,您可以在没有 makefile 的情况下进行编译。如果您的程序很简单(例如,只有一个文件),您可以通过调用编译器并在同一行中包含程序的名称来进行编译(不记得它是如何与 gcc 一起使用的)。当然,为了方便起见,这可以映射到 vim 中的一个键,这样您就不必跳转到命令提示符并返回。

        如果您正在处理一个由多个文件等组成的更大的项目,那么 makefile 会很有用。它将“搜索”文件,确定依赖关系,将它们包含在构建中,可能将源文件放在一个目录中,将生成的 exe 文件放在另一个目录中等等。所以它更像是一个链接和构建系统,而不仅仅是编译。 尽管 Can Berk Guder 的回答中提到的 GNU make 很受欢迎,但“构建 makefile”还有很多其他需要(“makefile”已成为这种操作的一种同义词) - 在这里,您可以看到这个link 的一些其他选项。由于它在历史上的作用,vim 对 :make 有很好的支持,但其他的也可以很容易地使用(VimWikia 上有很多关于这个主题的文本。

        嗯,就是这样。只是我的 0,2 欧元 :)

        【讨论】:

          【解决方案6】:

          我不是 makefile 和调试方面的专家,但我知道 Vim 可以让你做很多事情。 例如,如果你想用 gcc 编译一个文件,它与通常的方式并没有太大的不同。普通模式下:

          :!gcc file.c -o file
          

          事实上,您可以(几乎)通过添加“!”来使用每个系统命令在你的命令面前。 gdb 也适用于 Vim

          :!gdb
          

          希望对你有帮助。

          【讨论】:

            【解决方案7】:

            看看MinGW。如果您只需要 gcc 和 make,我会避免使用 Cygwin。您将需要 MinGW 和 MSYS。 MSYS 有一个 Windows 端口。

            如果您对 windows 命令行的更多 unix 实用程序感兴趣,我推荐CoreUtils

            学习请看manual

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-09-02
              • 2020-12-05
              • 2016-08-02
              • 2015-08-06
              • 2012-05-06
              • 1970-01-01
              相关资源
              最近更新 更多