从正常的命令行使用Visual Studio的'cl'

Tom*_*nen 35 command-line visual-studio

Visual Studio 2003和2005(可能是我所知道的2008)需要命令行用户在"Visual Studio命令提示符"中运行.启动此命令提示符时,它会设置C++编译器cl在编译时使用的各种环境变量.

这并不总是令人满意的.例如,如果我想从Ant中运行'cl',我想避免在'Visual Studio命令提示符'中运行Ant.运行vcvars32.bat不是一个选项,因为vcvars32.bat设置的环境在运行cl时会丢失(如果从Ant中运行).

有没有一种简单的方法来运行cl而无需在Visual Studio命令提示符下运行?

Vil*_*ari 53

编译器可以像命令行(或makefile)一样使用,就像任何其他编译器一样.您需要注意的主要事项是INCLUDE和LIB环境变量以及PATH.如果您从cmd.exe运行,则可以运行此.bat来设置环境:

C:\ Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat

如果您正在尝试使用makefile,Cygwin,MinGW等编译器,则需要手动设置环境变量.假设编译器安装在默认位置,这应该适用于Visual Studio 2008编译器和最新的Windows SDK:

添加到路径:

  • C:\ Program Files\Microsoft SDKs\Windows\v6.1\Bin
  • C:\ Program Files\Microsoft Visual Studio 9.0\VC\Bin
  • C:\ Program Files\Microsoft Visual Studio 9.0\Common7\IDE

添加到INCLUDE:

  • C:\ Program Files\Microsoft SDKs\Windows\v6.1\Include
  • C:\ Program Files\Microsoft Visual Studio 9.0\VC\include
  • C:\ Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include

添加到LIB:

  • C:\ Program Files\Microsoft SDKs\Windows\v6.1\Lib
  • C:\ Program Files\Microsoft Visual Studio 9.0\VC\lib

这些是最低限度的,但对于基本的东西应该足够了.研究vcvarsall.bat脚本以查看您可能想要设置的内容.


Ecl*_*pse 21

创建自己的批处理文件(比如clenv.bat),并调用它而不是cl:

@echo off
:: Load compilation environment
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
:: Invoke compiler with any options passed to this batch file
"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe" %*
Run Code Online (Sandbox Code Playgroud)

clenv.bat现在可以像cl.exe一样调用,除了它首先会首先加载所需的环境变量.


ljs*_*ljs 6

您只需运行自己设置变量的批处理文件即可.在VS08中,它位于: -

C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)


Red*_*dee 5

对于硬设置全局环境系统变量 - 添加到Path并创建Include, LIB

并更改以更正您的版本 MSVC、Windows SDK 和 x86 或 x64。

要检查您需要的变量 - 只需从 Windows 开始菜单运行 - VS 2019 的 x64 本机工具命令提示符,然后键入“设置路径”或“设置 lib”,或“设置包含”。

例如,这是我从 cmd 编译的 env。

小路

  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX64\x64

包括

  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\ATLMFC\include
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include
  • C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt
  • C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared
  • C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um
  • C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt
  • C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt

锂离子电池

  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\ATLMFC\lib\x64
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib\x64
  • C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64
  • C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

您还可以设置CL /MD变量以生成带有动态链接运行时库的代码,以减少可执行文件的大小 - 因为在默认 /MT 上 - 使用静态链接发布。也可以灵活地使用和覆盖 cmd 中的选项,但会显示一些关于更改选项的警告消息。 https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/3600tzxa(v=vs.100)

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/kezkeayy(v=vs.100)

在此处输入图片说明