it-swarm-korea.com

일반 명령 줄에서 Visual Studio의 'cl'사용

Visual Studio 2003 및 2005 (및 아마도 내가 아는 모든 2008)에는 명령 줄 사용자가 'Visual Studio 명령 프롬프트'에서 실행해야합니다. 이 명령 프롬프트를 시작할 때 C++ 컴파일러 cl이 컴파일 할 때 사용하는 다양한 환경 변수를 설정합니다.

항상 바람직한 것은 아닙니다. 예를 들어 Ant 내에서 'cl'을 실행하려면 'Visual Studio 명령 프롬프트'내에서 Ant를 실행하지 않아도됩니다. vcvars32.bat에 의해 설정된 환경은 cl이 실행 된 시간 (Anant 내에서 실행중인 경우)에 의해 손실되므로 vcvars32.bat를 실행하는 것은 옵션이 아닙니다.

Visual Studio 명령 프롬프트 내에서 실행하지 않고도 cl을 쉽게 실행할 수 있습니까?

38
Tom Hennen

컴파일러는 다른 컴파일러와 마찬가지로 명령 줄 (또는 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에서 작동합니다.

PATH에 추가 :

  • 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\포함
  • C :\Program Files\Microsoft Visual Studio 9.0\VC\include
  • C :\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include

LIB에 추가 :

  • C :\프로그램 파일\Microsoft SDKs\Windows\v6.1\Lib
  • C :\Program Files\Microsoft Visual Studio 9.0\VC\lib

이것들은 최소한이지만 기본적인 것에는 충분해야합니다. vcvarsall.bat 스크립트를 연구하여 더 많은 것을 설정하고 싶을 수도 있습니다.

54
Ville Laurikari

자체 배치 파일 (예 : 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" %*

필요한 환경 변수를 먼저로드한다는 점을 제외하고 cl.exe와 마찬가지로 clenv.bat를 호출 할 수 있습니다.

22
Eclipse

변수를 직접 설정하는 배치 파일을 실행할 수 있습니다. VS08에서는 다음 위치에 있습니다.

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

Vcvars32 또는 vsvars32 배치 파일의 기능은 로켓 과학이 아닙니다. 단순히 PATH, INCLUDE, LIB 및 가능하면 LIBPATH 환경 변수를 특정 컴파일러 버전의 적절한 기본값으로 설정합니다.

Ant 또는 makefile에 대해 해당 항목이 올바르게 설정되어 있는지 확인하기 만하면됩니다 (호출하기 전 또는 내부에 있음).

INCLUDE 및 LIB/LIBPATH의 경우 환경 변수에서 해당 항목을 설정하는 대안은 해당 설정을 명시 적 매개 변수로 명령 행에 전달하는 것입니다.

2
Michael Burr

Visual Studio 명령 프롬프트에서 실행되는 vcvarsall.bat 배치 파일은 단순히 시스템 환경 변수 및 경로를 멋지게 유지하려고 시도합니다 (여러 버전의 Visual Studio가있는 경우 중요 함).

설정을 하나의 버전으로 제한하고 긴 경로 및 환경 변수 세트를 사용하려면이 설정을 수동으로 시스템 환경 변수 (내 컴퓨터 | 속성 --- 또는 Win-Pause/Break)로 전송하십시오.

그래도 나는 이것을 추천합니다!

1
Ray Hayes

트릭은 항상 올바른 vcvars 배치 파일을 사용하는 것입니다. VisualStudio 버전이 하나만 설치되어 있어도 큰 문제는 없습니다. 나와 같은 여러 버전을 다루는 경우 MSVC++ 15 vcvars 파일로 설정된 콘솔에서 MSVC++ 14 빌드를 실행하는 것이 매우 쉬워집니다. 작동하거나 작동하지 않을 수 있지만 Visual Studio 내에서 빌드하는 것과 다를 수 있습니다.

우리는 terp 에서 선택한 컴파일러에서 적절한 vcvars 파일을 가져 와서 항상 툴 호출에 내부적으로 환경을 설정함으로써이 문제를 해결했습니다. 이렇게하면 항상 사용중인 컴파일러에 적합한 vcvars 파일이 있습니다.

다시 말하면 : vcvars 파일의 기능을 수동으로 복제하지 않는 것이 좋습니다. 실제로 원하는 것과 약간 다른 것을하는 동안 무언가를 놓치거나 제대로 작동하는 것처럼 보일 수밖에 없습니다.

1
alex

visual-studio-201 에서 Visual Studio 명령 프롬프트에 대한 Visual Studio 명령 줄을 여는 내 버전입니다. 내부적으로 라이브러리/프로젝트를 빌드 한 다음 결과 DLL 파일로 추가 단계를 수행하는 데 사용됩니다.

이 줄을 Compile and execute other steps.cmd 파일 등으로 복사하십시오.

@echo off

REM Load Visual Studio's build tools
call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

REM Choose what you want to do, 1 or 2 by (un)commenting

REM     1. Add your cl.exe (or msbuild.exe or other) commands here
REM msbuild.exe MyProject.csproj
REM cl.exe
REM custom-step.exe  %*
REM pause

REM     2. Open a normal interactive system command Shell with all variables loaded
%comspec% /k

이 버전의 스크립트에서는 나중에 대화식 명령 줄 모드로 "숙박"합니다. 비 대화식 목적으로 만 스크립트를 사용하려면 REM %comspec% /k에 주석을 답니다.

0
Joel Purra