c++ - 在 Visual Studio 中运行小型 C++ 程序而不创建项目

有没有什么方法可以在 Visual Studio 中构建/运行小型 C++ 程序而无需创建项目?

例如,如果我有一个文件hello.cpp,我可以在没有项目的情况下将它编译成hello.exe吗?

最佳答案

GMan's idea拥有一个“沙盒”项目是一个很好的项目,因为它可以轻松地尝试多文件测试。我称我的为“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%

在“工具/外部工具...”对话框中,添加一个新项目并填写以下字段:

  • 标题:&编译文件
  • 命令:c:\path\to\runcl.cmd
  • 参数:$(ItemPath)
  • 初始目录:$(ItemDir)

  • 选中“使用输出窗口”框

现在您可以使用“工具”菜单中的“编译文件”项来编译当前打开的文件。您甚至可以双击输出窗口中的错误,将您带到有错误的行。

这有一些限制,您可以通过修改批处理文件或使用 Visual Studio 宏来解决其中的一些限制(我对 VS 宏不太熟悉)。

  1. 如果您尚未保存文件,编译将针对最近的保存运行。外部工具配置中没有强制保存的选项。
  2. 如果您运行该命令并且没有 C 或 C++ 文件处于事件状态,则批处理文件将失败
  3. 批处理文件可能还有很多其他地方会混淆

这样的批处理文件的好处在于,您还可以使用它来帮助将编译器集成到各种编辑器中,这些编辑器可以让您调用外部工具,例如 UltraEdit、Zeus Editor、EditPad Pro、PSPad、Programmer's Notepad 等。等等

如果您愿意,我已经发布了一个批处理文件,用于将多个编译器集成到上述编辑器中。此批处理文件处理多个编译器,包括从版本 6 到版本 9 的各种 MSVC 编译器、Digital Mars、MinGW 和 Comeau 编译器(要使用的编译器由附加参数选择)。批处理文件非常复杂(不幸的是,这是具有任何复杂性的 Windows 批处理文件的本质)。但我发现它使从各种编辑器运行这些东西变得非常简单。我可以快速点击我分配给编译器的几个键来针对 5 个不同的编译器编译单个文件,这样我就可以轻松地测试兼容性。

除了我发现它对我自己的目的有用之外,我不做任何 promise - 如果你也这样做,那就太好了。否则,不要使用它...

  • https://gist.github.com/mburr/3308168

https://stackoverflow.com/questions/880803/

相关文章:

c++ - 在 Android NDK 项目中使用我自己的预构建共享库

xcode - 在 Xcode 中指定子项目的配置

maven - 如何从 lib 文件夹中添加 Maven 依赖 jar 文件

process - 为什么要自动化构建?

build - 何时使用门控值机?

android - 特拉维斯-CI `Android 28 licenses have not be

c++ - 如何将 CMake 项目与基于 GYP 的库集成

java - 如何创建一个包含 shell 脚本和不在 jar 中的属性文件的 maven 程序集?

java - eclipse 不编译项目

build - Dojo 1.8 和构建(或缺少)