현재 두 개의 서로 다른 소스 제어 시스템에 걸쳐 있는 C++ 프로젝트가 있습니다. 첫 번째 시스템의 전체 소스 코드를 두 번째 시스템에 체크인하지 않고, 구축된 지원 라이브러리만 체크인할 계획입니다. 내 질문은 컴파일할 수 있도록 두 번째 소스 제어 시스템에서 사용되는 첫 번째 소스 제어 시스템의 헤더 파일이 필요한가입니다. Solaris에서 컴파일할 때 gcc가 사용하는 모든 헤더 파일의 이름을 출력하도록 하는 쉬운 방법이 있습니까? 어떤 파일에 다른 헤더 파일이 포함되어 있는지 확인할 수 있도록 헤더 파일 종속성 계층 구조를 생성하는 방법이 있습니까? 종속성 트리에 여러 번 포함되지 않은 중복 항목이 포함되지 않도록 계층 구조에서 #pragma에 대해 한 번 학습할 수 있습니까?
답변1
gcc -M
주어진 소스 파일에서 사용되는 헤더 파일 목록을 생성하거나 gcc -MM
시스템 헤더 파일을 생략하려면 실행하세요 . 이 옵션은 이 소스 파일에 대한 빌드 종속성을 생성하기 위한 것이므로 출력은 makefile 형식입니다. 출력 형식을 조정하는 방법은 다양합니다. GCC 매뉴얼에서 사용 가능한 전처리기 옵션을 참조하세요. 기본 출력은 다음과 같습니다.
foo.o: foo.c some_header.h ../include/other_header.h \
../../common/include/yet_another_header.h
답변2
이것1992년 논문일부 AT&T 연구자들은 C 파일로 이 작업을 수행할 수 있는 "incl" 도구를 설명하지만, 제가 아는 한 "incl"은 세상에 등장한 적이 없습니다.