有没有办法在Visual Studio中构建/运行小型C++程序而不创建项目?
例如,如果我有一个文件hello.cpp
,我可以在hello.exe
没有项目的情况下编译它吗?
在实际的IDE中,我认为不可能运行一个小程序,你必须像Matt建议的那样使用命令行.
我遇到这个问题的解决方案是,我的计算机上有一个名为"sandbox"的项目,它只有一个main.cpp,它就是我可以乱搞的地方.
让我在这里和那里尝试一下,但我永远不必继续开始一个新项目.
GMan有一个"沙盒"项目的想法很好,因为它允许轻松尝试多文件测试.我称之为"cppTest".
但是,如果您只想编译碰巧打开的C或C++文件,只需创建一个简单的"外部工具"即可.实际上,它并不像它应该的那么简单.
首先,创建一个批处理文件,用于设置编译器环境并运行编译器.类似于以下内容:
@rem - runcl.cmd @rem a batch file to drive simple VC9 compiles #rem @echo off set LIBRARIES=kernel32.lib user32.lib advapi32.lib shlwapi.lib oleaut32.lib set WIN32_WINNT=0x0500 call "%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat" echo Visual C/C++ 2008 (VC 9.0) Compile... set CC="%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\cl.exe" /Zi /EHsc -D_WIN32_WINNT=%WIN32_WINNT% %1 /link /incremental:no %LIBRARIES% echo %CC% %CC%
在"工具/外部工具..."对话框中,添加新项目并填写以下字段:
标题: &Compile File
命令: c:\path\to\runcl.cmd
参数: $(ItemPath)
初始目录: $(ItemDir)
选中"使用输出窗口"框
现在,您可以使用"工具"菜单中的"编译文件"项来编译当前打开的文件.您甚至可以双击输出窗口中的错误,将您带到有错误的行.
这有一些局限性你可以通过理解批处理文件或者使用Visual Studio宏(我对VS宏不是很熟悉)来解决这个问题.
如果您尚未保存文件,则编译将针对最近的保存运行.外部工具配置中没有强制保存的选项.
如果您运行该命令并且没有活动的C或C++文件,则批处理文件将会崩溃
可能还有很多其他区域批处理文件会混淆
像这样的批处理文件的好处是你也可以使用它来帮助将编译器集成到各种编辑器中,这些编辑器可以调用外部工具,如UltraEdit,Zeus Editor,EditPad Pro,PSPad,Programmer's Notepad等.
如果您愿意,我已经发布了一个批处理文件,用于将多个编译器集成到上面的编辑器中.该批处理文件处理多个编译器,包括版本6到版本9的各种MSVC编译器,Digital Mars,MinGW和Comeau编译器(要使用的编译器由附加参数选择).批处理文件非常复杂(遗憾的是,这是具有任何复杂性的Windows批处理文件的本质).但我发现它使得从各种编辑器运行这些东西非常简单.我可以快速点击我分配给编译器的几个键来编译针对5个不同编译器的单个文件,这样我就可以轻松地测试兼容性.
除了我发现它对我自己的目的有用之外,我没有做出任何承诺 - 如果你也这样做,那很好.否则,不要使用它......
https://gist.github.com/mburr/3308168