我一直在Windows XP上使用Code :: Blocks学习C ++和Allegro,最近感觉就像学习Vim一样。但是,我不知道如何“手动”编译程序(即,不使用IDE)。
为了从Vim内部进行编译,我已经将makeprg设置为gcc,但我知道我还需要一个makefile。那是什么,我该怎么写?是否可以使用make文件,例如Allegro?
另外,我非常喜欢CB调试器(我正在使用gdb)。是否有可能与Vim做类似的事情?
谢谢。
答案 0 :(得分:4)
你不一定需要一个Makefile,但它是在类UNIX系统上编译代码的首选(也许是可能的)方法。
我不知道GNU Make是否有Windows端口,但您可以在Cygwin下运行它。
要了解有关GNU Make和Makefiles的更多信息:
另请参阅此问题:compile directly from vim
强制修改:我不使用Windows或Cygwin。您可能希望在该部门上使用epochwolf's advice。
答案 1 :(得分:4)
看看MinGW。如果你只需要gcc和make,我会避免使用Cygwin。你会想要MinGW和MSYS。 MSYS有一个make端口。
如果您对Windows命令行的更多unix功能感兴趣,我建议CoreUtils。
有关学习的内容,请参阅manual
答案 2 :(得分:3)
我不是makefile和调试方面的专家,但我知道Vim可以让你做很多事情。 例如,如果你想用gcc编译一个文件,它与通常的方式没有什么不同。在正常模式下输入:
:!gcc file.c -o file
事实上,只需添加“!”即可使用(几乎)每个系统命令在你的命令面前。 gdb也适用于Vim
:!gdb
我希望它会对你有所帮助。
答案 3 :(得分:2)
要将vim与devenv集成,可以使用Visual Studio中的devenv在vim中编译项目。命令如下:
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编译和构建程序。
答案 4 :(得分:1)
EDIT1:您可能会发现一些有用的书签:
GNU make tutorial(这个使用gcc和make,所以它应该在你的小巷里)
一些GNU工具的Win port可以提到;我个人使用这些,并且在Windows平台上没有遇到任何问题。
是的,您可以在没有makefile的情况下进行编译。如果您的程序很简单(例如,只有一个文件),您可以通过调用编译器进行编译,并在同一行中包含程序的名称(不记得它与gcc的关系)。当然,为了使事情更容易,这可以映射到vim中的键,因此您不必跳转到命令提示符并返回。
如果你正在开发一个更大的项目,它包含几个文件等,那么makefile就很有用。它将“搜索”文件,确定依赖关系,将它们包含在构建中,可能将源文件放在一个目录中,将生成的exe文件放在另一个目录中等等。所以它更像是一个链接和构建系统,而不仅仅是编译。 尽管Can Berk Guder的答案中提到的GNU make是一个受欢迎的答案,但是还有很多其他的“构建makefile”(“makefile”已经成为这种操作的同义词的类型) - 在这里,你可以看到此link上的其他一些选项。由于它在历史上的作用,vim对make有很好的支持,但是其他的也很容易使用(VimWikia上有很多关于这个主题的文本。
嗯,就是这样。只是我的0.2欧元:))
答案 5 :(得分:1)
只要安装了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)项目。
答案 6 :(得分:0)
我不确定调试,但我知道编写和运行当前程序的简单方法,因为我写了一个小的vim插件。
它假设您正在使用g ++编译器。如果没有,只需将名称更改为您正在使用的编译器。将此文件保存到whereveryouinstalledvim / ftplugin / cpp.vim
为了编译和运行当前打开的程序,只需在非编辑模式下键入shift-e。