명령 줄 옵션을 사용하여 헤더 파일을 포함 하시겠습니까?


80

명령 줄에서 포함 할 추가 헤더 파일을 지정할 수 있습니까 (GCC 4 / C ++ 사용)?

아니면 #include를 제외하고 파일을 포함 할 수있는 다른 방법이 있습니까?

배경 : 내 PC에서 대규모 코드베이스를 컴파일하려고합니다. 코드는 일반적으로 운영 체제와 얽혀있는 복잡한 빌드 시스템 (SoftRelTools anybody?)이있는 클러스터에서 컴파일되어 다른 곳에 설치하는 것이 사실상 불가능합니다 (문자 그대로 수백 개의 메이크 파일 및 셸 스크립트, 하드 네트워크 드라이브에 대한 코딩 된 경로). 그러나 실제 코드는 매우 간단하고 잘 컴파일되지만 많은 포함이 누락되어 있습니다 (대부분 a la " include <vector>"및 " include <math.h>"). 빌드 시스템이 일반적으로 이것을 처리한다고 생각하지만 코드를 살펴보고 수동으로 포함을 추가해야하므로 오히려 피하고 싶습니다.

답변:


88

내가 발견 -include 옵션을 선택합니다. 이것이 당신이 원하는 것입니까?

-파일 포함

"#include"file ""이 기본 소스 파일의 첫 번째 행으로 나타나는 것처럼 파일을 처리합니다. 그러나 파일을 검색 한 첫 번째 디렉토리는 기본 소스 파일이 포함 된 디렉토리가 아니라 전 처리기의 작업 디렉토리입니다. 찾을 수없는 경우 "#include"... ""검색 체인의 나머지 부분에서 정상적으로 검색됩니다.

-include 옵션이 여러 개있는 경우 파일은 명령 줄에 나타나는 순서대로 포함됩니다.


8
참고로 -include 기능은 주로 미리 컴파일 된 헤더를 지원하기위한 것입니다. 이렇게하면 모든 소스 파일을 편집 할 필요없이 모든 소스 파일에 .pch 파일을 삽입 할 수 있습니다.
gavinb

4
감사! RTFM (M = manpage)을했지만 놓쳤습니다. 또한 PCH는 Visual C ++ 기능 일 뿐이라고 생각했습니다 ...하지만 이것이 빌드 시스템에서 사용하던 것 같습니다 ...
jdm

1
Visual C *에 해당하는 명령 줄 인수는 /FI이며, 누군가 이것을 사용하는 빌드를 이식해야하는 경우를 대비합니다.
PypeBros

#include <file> (꺾쇠 괄호)과 비슷한 것이 있습니까? 더 자세히
말씀 드리면

환상적입니다. @gavinb 나는 libc 코드에 대한 몇 가지 대체 함수 및 / 또는 확장으로 libc 헤더 중 일부를 보완해야 할 때 베어 메탈 사용 사례에 이것을 사용했습니다. 내 모든 코드는 프로토 타입에 표준 헤더를 계속 사용할 수 있지만 플랫폼에서 작동하도록 만드는 데 필요한 몇 가지 추가 정의를 강제로 포함합니다.
sherrellbc

30

gcc 매뉴얼에서 :

-파일 포함

" #include "file""이 기본 소스 파일의 첫 번째 행으로 나타난 것처럼 파일을 처리합니다. 그러나 파일을 검색 한 첫 번째 디렉토리는 기본 소스 파일을 포함하는 디렉토리 대신 전 처리기의 작업 디렉토리입니다. 찾을 수없는 경우 " #include "...""검색 체인 의 나머지 부분에서 정상적으로 검색됩니다.

-include 옵션이 여러 개있는 경우 파일은 명령 줄에 나타나는 순서대로 포함됩니다.


11

gcc 문서에 따르면 명령 줄 스위치 "-include file"이 작업을 수행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.