从 cmd 运行 cl.exe

Posted

技术标签:

【中文标题】从 cmd 运行 cl.exe【英文标题】:Run cl.exe from cmd 【发布时间】:2018-06-13 06:41:50 【问题描述】:

我已经用 C++ 安装了Visual Studio Community 2017。我想从 cmd 使用它的编译器。我可以从 Developer Command Prompt for VS 2017 使用它,但我无法从普通 cmd 使用它。我尝试通过right click-> run as administrator 运行vsvarsall.exe。但什么也没有发生。好像我必须手动设置环境变量。 每当我尝试运行命令时

cl hello.c

上面写着hello.c(1): fatal error C1034: stdio.h: no include path set

【问题讨论】:

Using Visual Studio's 'cl' from a normal command line的可能重复 【参考方案1】:

Visual Studio 包含一个为您准备环境的批处理文件(实际上,开发人员命令提示符在后台调用它)。

我从未尝试过社区版,但对于 VS 2017 Professional,它位于 "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars32.bat"。当然,如果您更改了安装路径,它可能会有所不同。

所以,你所要做的就是调用它:

call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars32.bat"

应该会出现如下内容

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.7.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'

之后,您可以在 cmd 中调用 clnmakemsbuild

您也可以改为调用vcvarsall.bat x86vcvars32.bat 只是一个快捷方式)。


您可以通过创建一个自动调用它然后打开命令提示符的批处理来避免每次都输入它

call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars32.bat"
cmd

然后运行该批处理而不是 cmd。

另一种选择是将"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\" 添加到路径中,这样您只需在需要开发人员工具时输入vcvars32.bat

【讨论】:

每次使用 cmd 时都需要调用它吗?没有像永久设置这些变量这样的永久解决方案吗? @keen_learner 是的,您必须调用它,或者只是打开开发人员命令提示符;)。另一种选择是创建批处理或将目录添加到路径。我已经编辑了答案以涵盖这些情况。 如果我可以投票 10 次,我会的。感谢您的出色而直接的回答:-)【参考方案2】:

取自msdn:

开发者命令提示快捷方式自动设置正确的 编译器和工具的路径,以及任何所需的头文件和 图书馆。如果您使用 常规命令提示符窗口。如需更多信息,请参阅Setting the Path and Environment Variables for Command-Line Builds。

通过在普通的命令提示符窗口中运行vcvarsall.bat,您可以设置环境变量来配置命令行以进行本地 32 位或 64 位编译,或交叉编译到 x86、x64 或 ARM 处理器。

运行 vcvarsall.bat

    在命令提示符下,切换到 Visual C++ 安装目录。 (位置取决于系统和 Visual Studio 安装,但典型位置是 C:\Program Files (x86)\Microsoft Visual Studio version\VC\。)对于 example,输入:

    cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"

    要为 32 位 x86 命令行构建配置此命令提示符窗口,请在命令提示符处输入:

    vcvarsall x86

命令文件为构建工具、库和头文件的路径设置所需的环境变量。您现在可以使用此命令提示符窗口来运行命令行编译器和工具。

如果您想自己设置包含路径等,请查看https://docs.microsoft.com/nb-no/cpp/build/reference/cl-environment-variables

【讨论】:

每次使用 cmd 时都需要调用它吗?没有像永久设置这些变量这样的永久解决方案吗?我正在寻找手动设置 INCLUDE、LIB、LIBPATH 之类的东西【参考方案3】:

    以管理员身份打开 cmd

    cd "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\(检查VS的正确版本)

    在cmd模式下,运行vcvars64.bat/vcvars32.bat,

    现在编译你的代码,例如

    cl main.cpp // 会给出一些警告。抑制它输入

    cl /EHs main.cpp

【讨论】:

以上是关于从 cmd 运行 cl.exe的主要内容,如果未能解决你的问题,请参考以下文章

从 powershell 脚本运行 cmd 命令

如何从 cmd 运行作为包一部分的 .class 文件?

从绝对路径运行 cmd 无法识别 manage-bde 命令

从CMD文件运行PowerShell脚本 - 参数类型出错

从 hta 批处理文件运行 CMD 命令?

如何从 cmd(DroidEdit,终端)运行 android qpython 脚本?