본문 바로가기

3.구현/VC++

VC .NET 2003 컴파일러 옵션

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

사용법: cl [ option... ] filename... [ /link linkoption... ]

C/C++ 컴파일러 옵션

최적화

/O1 공간을 최소화합니다.
/Op[-] 부동 소수점 일치를 향상시킵니다.
/O2 속도를 최대화합니다.
/Os 코드 공간을 우선합니다.
/Oa 별칭 없음으로 가정합니다.
/Ot 코드 속도를 우선합니다.
/Ob 인라인 확장합니다(기본값 n=0).
/Ow 크로스 함수 별칭으로 가정합니다.
/Od 최적화를 사용하지 않습니다(기본값).
/Ox 최대 옵션을 사용합니다(/Ogityb2 /Gs).
/Og 전역 최적화를 사용합니다.
/Oy[-] 프레임 포인터를 생략합니다.
/Oi 내장 함수를 사용합니다.

코드 생성

/G3 80386에 맞게 최적화합니다.
/Gh _penter 함수 호출을 사용합니다.
/G4 80486에 맞게 최적화합니다.
/GH _pexit 함수 호출을 사용합니다.
/G5 Pentium에 맞게 최적화합니다.
/GR[-] C++ RTTI를 사용합니다.
/G6 PPro, P-II, P-III에 맞게 최적화합니다.
/GX[-] C++ EH를 사용합니다(/EHsc와 같음).
/G7 Pentium 4 또는 Athlon에 맞게 최적화합니다.
/EHs C++ EH를 사용합니다(SEH 예외 없음).
/GB 복합 모델에 맞게 최적화합니다(기본값).
/EHa C++ EH를 사용합니다(SEH 예외 있음).
/Gd __cdecl 호출 규칙
/EHc extern "C" 기본값을 nothrow로 설정합니다.
/Gr __fastcall 호출 규칙
/GT 파이버 안전 TLS 액세스를 생성합니다.
/Gz __stdcall 호출 규칙
Gm[-] 최소 다시 빌드를 사용합니다.
/GA Windows 응용 프로그램에 맞게 최적화합니다.
/GL[-] 링크 시간 코드 생성을 사용합니다.
/Gf 문자열 풀링을 사용합니다.
/QIfdiv[-] Pentium FDIV 수정을 사용합니다.
/GF 읽기 전용 문자열 풀링을 사용합니다.
/QI0f[-] Pentium 0x0f 수정을 사용합니다.
/Gy 링커 분리 함수를 사용합니다.
/QIfist[-] ftol() 대신 FIST를 사용합니다.
/GZ 스택 검사를 사용합니다(/RTCs).
/RTC1 빠른 검사를 사용합니다(/RTCsu).
/Ge 모든 함수에 대한 스택 검사를 수행합니다.
/RTCc 작은 형식 검사로 변환합니다.
/Gs[num] 스택 검사 호출을 제어합니다.
/RTCs 스택 프레임 런타임 검사를 사용합니다.
/GS 보안 검사를 사용합니다.
/RTCu 초기화되지 않은 지역 사용 검사를 사용합니다.
/clr[:noAssembly] 공용 언어 런타임에 대해 컴파일합니다.
noAssembly - 어셈블리를 생성하지 않습니다.
/arch:<SSE|SSE2> 최소 CPU 아키텍처 요구 사항(다음 중 하나):
SSE - SSE를 사용할 수 있는 CPU의 명령을 사용합니다.
SSE2 - SSE2를 사용할 수 있는 CPU의 명령을 사용합니다.

출력 파일

/Fa[file] 어셈블리 목록 파일의 이름을 지정합니다.
/Fo 개체 파일의 이름을 지정합니다.
/FA[sc] 어셈블리 목록을 구성합니다.
/Fp 미리 컴파일된 헤더 파일의 이름을 지정합니다.
/Fd[file] .PDB 파일의 이름을 지정합니다.
/Fr[file] 소스 브라우저 파일의 이름을 지정합니다.
/Fe 실행 파일의 이름을 지정합니다.
/FR[file] 확장 .SBR 파일의 이름을 지정합니다.
/Fm[file] 맵 파일의 이름을 지정합니다.

전처리기

/AI<dir> 어셈블리 검색 경로에 추가합니다.
/Fx 삽입된 코드를 파일에 병합합니다.
/FU<file> 강제로 어셈블리/모듈을 사용합니다.
/FI<file> 강제 포함 파일의 이름을 지정합니다.
/C 주석을 제거하지 않습니다.
/U<name> 미리 정의된 매크로를 제거합니다.
/D<name>{=|#}<text> 매크로를 정의합니다.
/u 미리 정의된 모든 매크로를 제거합니다.
/E stdout로 전처리합니다.
/I<dir> 포함 검색 경로에 추가합니다.
/EP #line 없이 stdout로 전처리합니다.
/X "표준 위치"를 무시합니다.
/P 파일로 전처리합니다.

언어

/Zi 디버깅 정보를 사용합니다.
/Ze 확장명을 사용합니다(기본값).
/ZI 디버그 정보의 편집하며 계속하기를 사용합니다.
/Zl .OBJ에 있는 기본 라이브러리 이름을 생략합니다.
/Z7 이전 스타일의 디버그 정보를 사용합니다.
/Zg 함수 프로토타입을 생성합니다.
/Zd 줄 번호 디버깅 정보만 확인합니다.
/Zs 구문만 확인합니다.
/Zp[n] n-바이트 경계에서 구조체를 압축합니다.
/vd{0|1} vtordisp를 설정/해제합니다.
/Za 확장명을 사용하지 않습니다(/Op를 의미).
/vm 멤버에 대한 포인터 형식을 사용합니다.
/Zc:arg1[,arg2] C++ 언어 규칙이며 인수는 다음과 같습니다.
forScope - 범위 지정 규칙에 표준 C++를 적용합니다.
wchar_t - wchar_t는 형식 정의가 아니라 네이티브 형식입니다.

기타

@<file> 지시 파일을 지정합니다.
/wo<n> 한 번에 n개의 경고를 보냅니다.
/?, /help 이 도움말 메시지를 인쇄합니다.
/w<l><n> n에 경고 수준(1-4)을 설정합니다.
/c 링크하지 않고 컴파일만 수행합니다.
/W<n> 경고 수준을 설정합니다(기본값 n=1).
/H<num> 최대 외부 이름 길이를 지정합니다.
/Wall 모든 경고를 사용합니다.
/J 기본 문자 형식은 부호 없음입니다.
/Wp64 64비트 포팅 경고를 사용합니다.
/nologo 저작권 메시지를 표시하지 않습니다.
/WX 경고를 오류로 처리합니다.
/showIncludes 포함 파일 이름을 표시합니다.
/WL 진단 정보를 한 줄로 표시합니다.
/Tc<source file> 파일을 .c로 컴파일합니다.
/Yc[file] .PCH 파일을 만듭니다.
/Tp<source file> 파일을 .cpp로 컴파일합니다.
/Yd 모든 .OBJ에 디버그 정보를 입력합니다.
/TC 모든 파일을 .c로 컴파일합니다.
/Yl[sym] 디버그 라이브러리에 .PCH 참조를 넣습니다.
/TP 모든 파일을 .cpp로 컴파일합니다.
/Yu[file] .PCH 파일을 사용합니다.
/V<string> 버전 문자열을 설정합니다.
/YX[file] 자동 .PCH입니다.
/w 모든 경고를 사용하지 않습니다.
/Y- 모든 PCH 옵션을 사용하지 않습니다.
/wd<n> n개의 경고를 사용하지 않습니다.
/Zm<n> 최대 메모리를 할당합니다(기본값의 %).
/we<n> n개의 경고를 하나의 오류로 처리합니다.

링크

/MD MSVCRT.LIB에 링크합니다.
/MDd MSVCRTD.LIB 디버그 라이브러리에 링크합니다.
/ML LIBC.LIB에 링크합니다.
/MLd LIBCD.LIB 디버그 라이브러리에 링크합니다.
/MT LIBCMT.LIB에 링크합니다.
/MTd LIBCMTD.LIB 디버그 라이브러리에 링크합니다.
/LD .DLL을 만듭니다.
/F<num> 스택 크기를 설정합니다.
/LDd .DLL 디버그 라이브러리를 만듭니다.
/link [링커 옵션 및 라이브러리]

반응형