[VisualStudio] Visual C++ 컴파일러 옵션
Posted on 2008/01/10 00:50
Filed Under Computer languages
통합개발환경(VS) 에서의 설정은 프로젝트마다 컴파일러 옵션이 설정할 수 있습니다.(프로젝트속성-> 구성속성)
각각의 카테고리로 yes/no 설정이 가능하지만 직접 구성속성의 명령줄로 추가옵션을 입력해줄수도 있지요.
아래 옵션 목록은 MSDN에 있는 내용입니다.
-----------------------------------------------------------------------------------------------
각각의 카테고리로 yes/no 설정이 가능하지만 직접 구성속성의 명령줄로 추가옵션을 입력해줄수도 있지요.
아래 옵션 목록은 MSDN에 있는 내용입니다.
-----------------------------------------------------------------------------------------------
컴파일러 옵션 범주별 목록
다음은 범주별로 나열한 포괄적인 컴파일러 옵션 목록입니다. 사전순으로 나열된 목록을 보려면 컴파일러 옵션 사전순 목록을 참조하십시오.
최적화
| 옵션 | 용도 |
|---|---|
| /O1 | 작은 코드를 만듭니다. |
| /O2 | 빠른 코드를 만듭니다. |
| /Oa | 별칭 없음으로 가정합니다. |
| /Ob | 인라인 확장을 제어합니다. |
| /Od | 최적화를 사용하지 않습니다. |
| /Og | 전역 최적화를 사용합니다. |
| /Oi | 내장 함수를 생성합니다. |
| /Op | 부동 소수점 일치를 향상시킵니다. |
| /Os | 코드 크기를 우선으로 합니다. |
| /Ot | 코드 속도를 우선으로 합니다. |
| /Ow | 함수 호출에 별칭을 가정합니다. |
| /Ox | 최대 최적화(/Ob1gity /Gs)를 사용합니다. |
| /Oy | 프레임 포인터를 생략합니다. |
코드 생성
| 옵션 | 용도 |
|---|---|
| /arch | 코드 생성 시 SSE 또는 SSE2 명령을 사용합니다. |
| /clr | Managed Extensions for C++를 사용하고 공용 언어 런타임에서 실행할 출력 파일을 생성합니다. |
| /EH | 예외 처리 모델을 지정합니다. |
| /G3 | 386 프로세서에 맞게 코드를 최적화합니다. Visual C++ 5.0에서 사용하면 컴파일러가 이 옵션을 무시합니다. |
| /G4 | 486 프로세서에 맞게 코드를 최적화합니다. Visual C++ 5.0에서 사용하면 컴파일러가 이 옵션을 무시합니다. |
| /G5 | Pentium에 맞게 코드를 최적화합니다. |
| /G6 | Pentium Pro, Pentium II 및 Pentium III 프로세서에 맞게 코드를 최적화합니다. |
| /G7 | Pentium 4 또는 Athlon 프로세서에 맞게 코드를 최적화합니다. |
| /GB | /G6와 동일하며 _M_IX86 값을 600으로 설정합니다. |
| /Gd | __cdecl 호출 규칙을 사용합니다. |
| /Ge | 스택 조사를 활성화합니다. |
| /GF /Gf |
문자열 풀링을 사용합니다. |
| /Gh | 후크 함수 _penter를 호출합니다. |
| /GH | 후크 함수 _pexit을 호출합니다. |
| /GL | 전체 프로그램 최적화를 사용합니다. |
| /Gm | 최소 재빌드를 사용합니다. |
| /GR | RTTI(런타임 형식 정보)를 사용합니다. |
| /Gr | __fastcall 호출 규칙을 사용합니다. |
| /Gs | 스택 조사를 제어합니다. |
| /GT | 정적 스레드 로컬 저장소를 사용하여 할당한 데이터의 파이버 안전을 지원합니다. |
| /GX | 동기 예외 처리를 사용합니다. |
| /Gy | 함수 수준 링크를 사용합니다. |
| /Gz | __stdcall 호출 규칙을 사용합니다. |
| /MD | MSVCRT.lib를 사용하여 다중 스레드 DLL을 만듭니다. |
| /MDd | MSVCRTD.lib를 사용하여 디버그 다중 스레드 DLL을 만듭니다. |
| /ML | LIBC.lib를 사용하여 단일 스레드 실행 파일을 만듭니다. |
| /MLd | LIBCD.lib를 사용하여 디버그 단일 스레드 실행 파일을 만듭니다. |
| /MT | LIBCMT.lib를 사용하여 다중 스레드 실행 파일을 만듭니다. |
| /MTd | LIBCMTD.lib를 사용하여 디버그 다중 스레드 실행 파일을 만듭니다. |
출력 파일
| 옵션 | 용도 |
|---|---|
| /FA /Fa |
목록 파일을 만들고 목록 파일 이름을 설정합니다. |
| /Fd | 프로그램 데이터베이스 파일 이름을 바꿉니다. |
| /Fe | 실행 파일 이름을 바꿉니다. |
| /Fm | 맵파일을 만듭니다. |
| /Fo | 개체 파일을 만듭니다. |
| /Fp | 미리 컴파일된 헤더 파일 이름을 지정합니다. |
| /FR /Fr |
브라우저 파일을 생성합니다. |
| /Fx | 삽입된 코드와 소스 파일을 병합합니다. |
디버깅
| 옵션 | 용도 |
|---|---|
| /GS | 보안 검사를 버퍼링합니다. |
| /GZ | /RTC1과 동일합니다. |
| /RTC | 런타임 오류 검사를 사용합니다. |
| /Wp64 | 64비트 이식성 문제를 검색합니다. |
| /Yd | 모든 개체 파일에 완전한 디버깅 정보를 저장합니다. |
| /Yl | 디버그 라이브러리를 만들 때 PCH 참조를 삽입합니다. |
| /Z7 | C 7.0 호환 디버깅 정보를 생성합니다. |
| /Zd | 줄 번호를 생성합니다. |
| /Zi | 완전한 디버깅 정보를 생성합니다. |
전처리기
| 옵션 | 용도 |
|---|---|
| /AI | #using 지시문에 전달된 파일 참조를 확인하기 위해 검색할 디렉터리를 지정합니다. |
| /C | 전처리하는 동안 주석을 유지합니다. |
| /D | 상수와 매크로를 정의합니다. |
| /E | 전처리기 출력을 표준 출력에 복사합니다. |
| /EP | 전처리기 출력을 표준 출력에 복사합니다. |
| /FI | 지정된 포함 파일을 전처리합니다. |
| /FU | 파일 이름이 #using 지시문에 전달된 것처럼 사용되도록 합니다. |
| /I | 포함 파일의 디렉터리를 검색합니다. |
| /P | 전처리기 출력을 파일에 씁니다. |
| /U | 미리 정의된 매크로를 제거합니다. |
| /u | 미리 정의된 모든 매크로를 제거합니다. |
| /X | 표준 포함 디렉터리를 무시합니다. |
| /ZI | 편집하며 계속하기와 호환되는 프로그램 데이터베이스에 디버깅 정보를 포함합니다. |
언어
| 옵션 | 용도 |
|---|---|
| /vd | 숨겨진 vtordisp 클래스 멤버를 사용하거나 사용하지 않습니다. |
| /vmb | 멤버의 포인터에 best case를 사용합니다. |
| /vmg | 멤버의 포인터에 full generality를 사용합니다. |
| /vmm | 다중 상속을 선언합니다. |
| /vms | 단일 상속을 선언합니다. |
| /vmv | 가상 상속을 선언합니다. |
| /Za | 언어 확장을 사용하지 않습니다. |
| /Zc | /Ze에서 표준 동작을 지정합니다. |
| /Ze | 언어 확장을 사용합니다. |
| /Zg | 함수 프로토타입을 생성합니다. |
| /Zl | .obj 파일에서 기본 라이브러리 이름을 제거합니다. |
| /Zpn | 구조체 멤버를 넣습니다. |
| /Zs | 구문만 확인합니다. |
링크
| 옵션 | 용도 |
|---|---|
| /F | 스택 크기를 설정합니다. |
| /LD | DLL(동적 연결 라이브러리)을 만듭니다. |
| /LDd | 디버그 DLL(동적 연결 라이브러리)을 만듭니다. |
| /link | 지정된 옵션을 LINK에 전달합니다. |
| /MD | MSVCRT.lib을 사용하여 컴파일함으로써 다중 스레드 DLL을 만듭니다. |
| /MDd | MSVCRTD.lib로 컴파일하여 디버그 다중 스레드 DLL을 만듭니다. |
| /ML | LIBC.lib를 사용하여 컴파일함으로써 단일 스레드 실행 파일을 만듭니다. |
| /MLd | LIBCD.lib를 사용하여 컴파일함으로써 디버그 단일 스레드 실행 파일을 만듭니다. |
| /MT | LIBCMT.lib를 사용하여 컴파일함으로써 다중 스레드 실행 파일을 만듭니다. |
| /MTd | LIBCMTD.lib를 사용하여 컴파일함으로써 디버그 다중 스레드 실행 파일을 만듭니다. |
미리 컴파일된 헤더
| 옵션 | 용도 |
|---|---|
| /Y- | 현재 빌드에서 미리 컴파일된 다른 모든 헤더 컴파일러 옵션을 무시합니다. |
| /Yc | 미리 컴파일된 헤더 파일을 만듭니다. |
| /Yd | 모든 개체 파일에 완전한 디버깅 정보를 저장합니다. |
| /Yu | 빌드하는 동안 미리 컴파일된 헤더 파일을 사용합니다. |
| /YX | 미리 컴파일된 헤더를 자동화합니다. |
기타
| 옵션 | 용도 |
|---|---|
| @ | 지시 파일을 지정합니다. |
| /? | 컴파일러 옵션을 나열합니다. |
| /c | 링크하지 않고 컴파일합니다. |
| /H | 외부 공개 이름의 길이를 제한합니다. |
| /HELP | 컴파일러 옵션을 나열합니다. |
| /J | 기본 char 형식을 변경합니다. |
| /nologo | 초기 화면 배너를 표시하지 않습니다. |
| /QI0f | Pentium 0F 명령에 문제가 없도록 합니다. |
| /QIfdiv | 결함이 있는 FDIV, FPREM, FPTAN 및 FPATAN 명령을 가진 Intel Pentium 마이크로프로세서 문제를 해결합니다. |
| /QIfist | 부동 소수점 형식에서 정수 계열 형식으로 변환해야 할 때 도우미 함수 _ftol가 호출되지 않도록 합니다. |
| /showIncludes | 컴파일하는 동안 전체 포함 파일의 목록을 표시합니다. |
| /Tc /TC |
C 소스 파일을 지정합니다. |
| /Tp /TP |
C++ 소스 파일을 지정합니다. |
| /V | 버전 문자열을 설정합니다. |
| /W | 경고 수준을 설정합니다. |
| /w | 모든 경고를 사용하지 않습니다. |
| /Wall | 기본적으로 비활성화되는 경고를 포함하여 모든 경고를 활성화합니다. |
| /WL | 명령줄에서 C++ 소스 코드를 컴파일할 때 오류 및 경고 메시지에 한 줄 진단을 사용합니다. |
| /Zm | 미리 컴파일된 헤더 메모리의 할당 제한을 지정합니다. |
'Computer languages' 카테고리의 다른 글
| [C/C++] 1차원 배열을 2차원 배열로 복사하기 (0) | 2008/02/28 |
|---|---|
| [General] The meaning of words related to IT #2 - (RTFM,STFW,RTFA,RFMF and so on) (0) | 2008/02/04 |
| [VisualStudio] Visual C++ 컴파일러 옵션 (4) | 2008/01/10 |
| [VisualStudio] VC 프로젝트 쉽게 생성(?)하기 (0) | 2007/12/11 |
| [General] Window to Viewport mapping - 윈도우-뷰포트 사상 (0) | 2007/10/14 |
| [Windows] 윈도우 시스템 DLL 전체 설명 (0) | 2007/09/27 |




댓글을 달아 주세요
가나다 2008/12/13 04:42 댓글주소 수정/삭제 댓글쓰기
정리를 잘 해 놓으셨네요 ^_^
아 이건 MSDN 에서 가져왔던것 같네요.
제가 정리한건 아니에요. ^^;
미친감자 2009/10/21 14:58 댓글주소 수정/삭제 댓글쓰기
그림좀 좀 빌려가요^^
네