C++/C++
MSVC++ 컴파일 옵션 목록
Elan
2021. 12. 17. 19:55
최적화
최적화옵션용도
/O1 | 작은 코드를 만듭니다. |
/O2 | 빠른 코드를 만듭니다. |
/Ob | 인라인 확장을 제어합니다. |
/Od | 최적화를 사용하지 않습니다. |
/Og | 더 이상 사용되지 않습니다. 전역 최적화를 사용합니다. |
/Oi | 내장 함수를 생성합니다. |
/Os | 코드 크기를 우선으로 합니다. |
/Ot | 코드 속도를 우선으로 합니다. |
/Ox | /GF 또는 /Gy를 포함하지 않는 /O2의 하위 집합입니다. |
/Oy | 프레임 포인터를 생략합니다. (x86 전용) |
/favor | 지정된 아키텍처나 아키텍처 범주에 최적화된 코드를 생성합니다. |
코드 생성
코드 생성옵션용도
/arch | 코드 생성 시 SSE 또는 SSE2 명령을 사용합니다. (x86 전용) |
/clr | 공용 언어 런타임에 실행할 출력 파일을 생성합니다. |
/EH | 예외 처리 모델을 지정합니다. |
/fp | 부동 소수점 동작을 지정합니다. |
/fpcvt | 부동 소수점에서 부호 없는 정수로의 변환 동작을 지정합니다. |
/GA | Windows 애플리케이션에 맞게 최적화합니다. |
/Gd | __cdecl 호출 규칙을 사용합니다(x86 (x86 전용) |
/Ge | 더 이상 사용되지 않습니다. 스택 프로브를 활성화합니다. |
/GF | 문자열 풀링을 사용합니다. |
/Gh | 후크 함수 _penter를 호출합니다. |
/GH | 후크 함수 _pexit를 호출합니다. |
/GL | 전체 프로그램 최적화를 사용합니다. |
/Gm | 더 이상 사용되지 않습니다. 최소 재빌드를 사용합니다. |
/GR | RTTI(런타임 형식 정보)를 사용합니다. |
/Gr | __fastcall 호출 규칙을 사용합니다(x86 (x86 전용) |
/GS | 버퍼 보안을 검사합니다. |
/Gs | 스택 프로브를 제어합니다. |
/GT | 정적 스레드 로컬 스토리지를 사용하여 할당한 데이터의 파이버 안전을 지원합니다. |
/guard:cf | 제어 흐름 가드 보안 검사를 추가합니다. |
/guard:ehcont | EH 연속 메타데이터를 사용하도록 설정합니다. |
/Gv | __vectorcall 호출 규칙을 사용합니다(x86 및 x64에만 해당). |
/Gw | 전체 프로그램 전역 데이터 최적화를 사용하도록 설정합니다. |
/GX | 더 이상 사용되지 않습니다. 동기 예외 처리를 사용합니다. 대신 /EH를 사용하세요. |
/Gy | 함수 수준 링크를 사용합니다. |
/GZ | 더 이상 사용되지 않습니다. 빠른 검사를 사용하도록 설정합니다. (와 /RTC1 동일) |
/Gz | __stdcall 호출 규칙을 사용합니다(x86 (x86 전용) |
/homeparams | 레지스터에 전달된 매개 변수를 함수 시작 시 스택의 해당 위치에 기록합니다. 이 컴파일러 옵션은 x64 컴파일러(네이티브 및 크로스 컴파일)에만 해당됩니다. |
/hotpatch | 핫 패치할 수 있는 이미지를 만듭니다. |
/Qfast_transcendentals | 빠른 초월수를 생성합니다. |
/QIfist | 더 이상 사용되지 않습니다. 부동 소수점 형식에서 정수 계열 형식으로 변환해야 할 때 도우미 함수 _ftol 이 호출되지 않도록 합니다. (x86 전용) |
/Qimprecise_fwaits | fwait 블록 내에 있는 try 명령을 제거합니다. |
/QIntel-jcc-erratum | Intel JCC erratum 마이크로코드 업데이트의 성능 영향을 완화합니다. |
/Qpar | 루프 자동 병렬화를 사용하도록 설정합니다. |
/Qpar-report | 자동 병렬화에 대한 보고 수준을 사용하도록 설정합니다. |
/Qsafe_fp_loads | 부동 소수점 값에 대한 정수 이동 명령을 사용하고 특정 부동 소수점 부하 최적화를 사용하지 않도록 설정합니다. |
/Qspectre | 스펙터 공격 클래스에 대해 CVE 2017-5753에 대한 완화를 사용하도록 설정합니다. |
/Qspectre-load | 모든 로드 명령에 대한 직렬화 명령을 생성합니다. |
/Qspectre-load-cf | 메모리를 로드하는 모든 제어 흐름 명령에 대한 직렬화 명령을 생성합니다. |
/Qvec-report | 자동 벡터화에 대한 보고 수준을 사용하도록 설정합니다. |
/RTC | 런타임 오류 검사를 사용합니다. |
/volatile | volatile 키워드가 해석되는 방식을 선택합니다. |
출력 파일
출력 파일옵션용도
/doc | XML 파일에 대해 문서 주석을 처리합니다. |
/FA | 어셈블리 목록 파일을 구성합니다. |
/Fa | 어셈블리 목록 파일을 만듭니다. |
/Fd | 프로그램 데이터베이스 파일 이름을 바꿉니다. |
/Fe | 실행 파일 이름을 바꿉니다. |
/Fi | 전처리된 출력 파일 이름을 지정합니다. |
/Fm | 맵 파일을 만듭니다. |
/Fo | 개체 파일을 만듭니다. |
/Fp | 미리 컴파일된 헤더 파일 이름을 지정합니다. |
, /Fr | 생성된 .sbr 브라우저 파일의 이름입니다. |
전처리기
전처리기옵션용도
/AI | #using 지시문에 전달된 파일 참조를 확인하기 위해 검색할 디렉터리를 지정합니다. |
/C | 전처리하는 동안 주석을 유지합니다. |
/D | 상수와 매크로를 정의합니다. |
/E | 전처리기 출력을 표준 출력에 복사합니다. |
/EP | 전처리기 출력을 표준 출력에 복사합니다. |
/FI | 지정된 포함 파일을 전처리합니다. |
/FU | 는 #using 지시문에 전달 된 것 처럼 파일 이름을 사용 하도록 합니다. |
/Fx | 삽입된 코드와 소스 파일을 병합합니다. |
/I | 포함 파일의 디렉터리를 검색합니다. |
/P | 전처리기 출력을 파일에 씁니다. |
/U | 미리 정의된 매크로를 제거합니다. |
/u | 미리 정의된 모든 매크로를 제거합니다. |
/X | 표준 포함 디렉터리를 무시합니다. |
헤더 단위
헤더 단위옵션용도
/exportHeader | 입력 인수로 지정 된 헤더 단위 파일 ()을 만듭니다 .ifc . |
/headerUnit | 지정 된 헤더에 대 한 헤더 단위 파일 ()을 찾을 위치를 지정 .ifc 합니다. |
/headerName | 지정 된 헤더에서 헤더 단위를 빌드합니다. |
/reference | 명명 된 모듈 IFC를 사용 합니다. |
/sourceDependencies | 모든 원본 수준 종속성을 나열 합니다. |
/sourceDependencies:directives | 모듈 및 헤더 단위 종속성을 나열 합니다. |
/translateInclude | #include을로 처리 import 합니다. |
언어
언어옵션용도
/constexpr | constexpr컴파일 시간에 컨트롤 평가 |
/openmp | #pragma omp소스 코드에서를 사용 하도록 설정 합니다. |
/vd | 숨겨진 vtordisp 클래스 멤버를 사용하도록 설정하거나 표시하지 않습니다. |
/vmb | 멤버의 포인터에 best case를 사용합니다. |
/vmg | 멤버의 포인터에 full generality를 사용합니다. |
/vmm | 다중 상속을 선언합니다. |
/vms | 단일 상속을 선언합니다. |
/vmv | 가상 상속을 선언합니다. |
/Z7 | C 7.0 호환 디버깅 정보를 생성 합니다. |
/Za | C89 언어 확장을 사용 하지 않도록 설정 합니다. |
/Zc | 에서 표준 동작을 지정 합니다 /Ze . |
/Ze | 더 이상 사용되지 않습니다. C89 언어 확장을 사용 합니다. |
/Zf | 병렬 빌드에서 PDB 생성 시간을 향상 시킵니다. |
/ZH | 디버그 정보에서 체크섬에 대해 MD5, SHA-1 또는 SHA-256을 지정 합니다. |
/ZI | 편집하며 계속하기와 호환되는 프로그램 데이터베이스에 디버깅 정보를 포함합니다. (x86 전용) |
/Zi | 완전한 디버깅 정보를 생성합니다. |
/Zl | 파일에서 기본 라이브러리 이름을 제거 합니다 .obj . |
/Zp/Zp | 구조체 멤버를 압축합니다. |
/Zs | 구문만 확인합니다. |
/ZW | Windows 런타임에서 실행할 출력 파일을 생성 합니다. |
연결
연결옵션용도
/F | 스택 크기를 설정합니다. |
/LD | DLL(동적 연결 라이브러리)을 만듭니다. |
/LDd | 디버그 DLL(동적 연결 라이브러리)을 만듭니다. |
/link | 지정된 옵션을 LINK에 전달합니다. |
/LN | MSIL 모듈을 만듭니다. |
/MD | Msvcrt.lib를 사용 하 여 다중 스레드 DLL을 만들도록 컴파일합니다. |
/MDd | Msvcrtd.lib를 사용 하 여 디버그 다중 스레드 DLL을 만들도록 컴파일합니다. |
/MT | Libcmt.lib를 사용 하 여 다중 스레드 실행 파일을 만들기 위해 컴파일합니다. |
/MTd | Libcmtd.lib를 사용 하 여 디버그 다중 스레드 실행 파일을 만들기 위해 컴파일합니다. |
기타
기타옵션용도
/? | 컴파일러 옵션을 나열합니다. |
@ | 지시 파일을 지정합니다. |
/analyze | 코드 분석을 활성화합니다. |
/bigobj | .obj 파일에서 주소 지정 가능한 섹션의 수를 늘립니다. |
/c | 링크하지 않고 컴파일합니다. |
/cgthreads | 최적화 및 코드 생성에 사용할 cl.exe 스레드 수를 지정 합니다. |
/errorReport | 더 이상 사용되지 않습니다. 오류 보고는 WER (Windows 오류 보고) 설정에 의해 제어 됩니다. |
/external | 외부 헤더에서 진단 제어를 허용 합니다. |
/FC | 진단 텍스트에서 cl.exe 에 전달 된 소스 코드 파일의 전체 경로를 표시 합니다. |
/FS | MSPDBSRV.EXE를 통해 SERIALIZE 될 PDB 파일에 대 한 쓰기를 강제로 수행 합니다. |
/fsanitize | AddressSanitizer와 같은 sanitizer 계측의 컴파일을 사용 하도록 설정 합니다. |
/fsanitize-coverage | LibFuzzer와 같은 라이브러리에 대 한 코드 검사 계측 컴파일을 사용 하도록 설정 합니다. |
/H | 더 이상 사용되지 않습니다. 외부 공개 이름의 길이를 제한합니다. |
/HELP | 컴파일러 옵션을 나열합니다. |
/J | 기본 char 형식을 변경합니다. |
/JMC | 네이티브 c + + 내 코드만 디버깅을 지원 합니다. |
/kernel | 컴파일러와 링커는 Windows 커널에서 실행할 수 있는 이진 파일을 만듭니다. |
/MP | 여러 개의 소스 파일을 동시에 빌드합니다. |
/nologo | 초기 화면 배너를 표시하지 않습니다. |
/sdl | 추가 보안 기능 및 경고를 사용하도록 설정합니다. |
/showIncludes | 컴파일하는 동안 전체 포함 파일의 목록을 표시합니다. |
/Tc | C 소스 파일을 지정합니다. |
/TC | 모든 소스 파일을 C로 지정 합니다. |
/Tp | C++ 소스 파일을 지정합니다. |
/TP | 모든 소스 파일을 c + +로 지정 합니다. |
/V | 더 이상 사용되지 않습니다. 버전 문자열을 설정합니다. |
/w | 모든 경고를 사용하지 않습니다. |
, /W1, /W2, /W3, /W4 | 출력 경고 수준을 설정합니다. |
, /w2, /w3, /w4 | 지정된 경고에 대한 경고 수준을 설정합니다. |
/Wall | 기본적으로 비활성화되는 경고를 포함하여 모든 경고를 활성화합니다. |
/wd | 지정된 경고를 사용하지 않습니다. |
/we | 지정된 경고를 오류로 처리합니다. |
/WL | 명령줄에서 C++ 소스 코드를 컴파일할 때 오류 및 경고 메시지에 한 줄 진단을 사용합니다. |
/wo | 지정된 경고를 한 번만 표시합니다. |
/Wv | 이후 버전의 컴파일러에서 도입된 경고를 사용하지 않습니다. |
/WX | 경고를 오류로 처리합니다. |
/Yc | .PCH파일을 만듭니다. |
/Yd | 더 이상 사용되지 않습니다. 모든 개체 파일에 완전한 디버깅 정보를 저장합니다. 대신 /Zi를 사용하세요. |
/Yl | 디버그 라이브러리를 만들 때 PCH 참조를 삽입합니다. |
/Yu | 빌드하는 동안 미리 컴파일된 헤더 파일을 사용합니다. |
/Y- | 현재 빌드에서 미리 컴파일된 다른 모든 헤더 컴파일러 옵션을 무시합니다. |
/Zm | 미리 컴파일된 헤더 메모리의 할당 제한을 지정합니다. |
/await | 코 루틴 (다시 시작 가능한 함수) 확장을 사용 하도록 설정 합니다. |
/source-charset | 원본 문자 집합을 설정 합니다. |
/execution-charset | 실행 문자 집합을 설정 합니다. |
/utf-8 | 원본 및 실행 문자 집합을 u t f-8로 설정 합니다. |
/validate-charset | 호환 되는 문자만을 위한 UTF-8 파일의 유효성을 검사 합니다. |
/diagnostics | 진단 메시지의 형식을 제어 합니다. |
/permissive- | 표준 규칙 모드를 설정 합니다. |
/std | C + + 표준 버전 호환성 선택기입니다. |
실험적 옵션
실험적 옵션은 특정 버전의 컴파일러 에서만 지원 될 수 있습니다. 다른 컴파일러 버전에서 다르게 동작할 수도 있습니다. 일반적으로 실험적 옵션에 대 한 설명서는 Microsoft c + + 팀 블로그에 있습니다.
실험적 옵션옵션용도
/experimental:module | 실험적 모듈 지원을 사용 하도록 설정 합니다. |
/experimental:preprocessor | 더 이상 사용되지 않습니다. 실험적 규격 전처리기 지원을 사용 하도록 설정 합니다. /Zc:preprocessor 사용 |
사용 되지 않고 제거 되는 컴파일러 옵션
사용 되지 않고 제거 되는 컴파일러 옵션옵션용도
/clr:noAssembly | 더 이상 사용되지 않습니다. 대신 (MSIL 모듈 만들기)를 사용 합니다. |
/errorReport | 더 이상 사용되지 않습니다. 오류 보고는 WER (Windows 오류 보고) 설정에 의해 제어 됩니다. |
/Fr | 더 이상 사용되지 않습니다. 지역 변수 없이 찾아보기 정보 파일을 만듭니다. |
/Ge | 더 이상 사용되지 않습니다. 스택 프로브를 활성화합니다. 기본적으로 설정되어 있습니다. |
/Gm | 더 이상 사용되지 않습니다. 최소 재빌드를 사용합니다. |
/GX | 더 이상 사용되지 않습니다. 동기 예외 처리를 사용합니다. 대신 /EH를 사용하세요. |
/GZ | 더 이상 사용되지 않습니다. 빠른 검사를 사용하도록 설정합니다. 대신 /RTC1를 사용하세요. |
/H | 더 이상 사용되지 않습니다. 외부 공개 이름의 길이를 제한합니다. |
/Og | 더 이상 사용되지 않습니다. 전역 최적화를 사용합니다. |
/QIfist | 더 이상 사용되지 않습니다. 부동 소수점 형식에서 정수 계열 형식으로 변환하는 방법을 지정하는 데 사용되었습니다. |
/V | 더 이상 사용되지 않습니다. .obj파일 버전 문자열을 설정 합니다. |
/Wp64 | 사용되지 않습니다. 64비트 이식성 문제를 검색합니다. |
/Yd | 더 이상 사용되지 않습니다. 모든 개체 파일에 완전한 디버깅 정보를 저장합니다. 대신 /Zi를 사용하세요. |
/Zc:forScope- | 더 이상 사용되지 않습니다. for 루프 범위의 규칙을 사용하지 않도록 설정합니다. |
/Ze | 더 이상 사용되지 않습니다. 언어 확장을 사용합니다. |
/Zg | Visual Studio 2015에서 제거 되었습니다. 함수 프로토타입을 생성합니다. |
컴파일러 옵션 범주별 목록
Microsoft C/C++ 컴파일러 명령줄 옵션의 범주별 참조 목록입니다.
docs.microsoft.com