테스트 버킷에 수백 개의 .c 소스 프로그램이있는 그룹에서 일합니다. .c 프로그램은 상당히 작으며 모두 동일한 .h 헤더 파일을 포함합니다. 이러한 .h 파일은 상당히 큽니다.많은 .c 소스 프로그램에서 사용하는 .h 헤더 파일을 컴파일하고 연결하십시오.
우리는 테스트를 위해 테스트 프로그램을 링크 할 새 라이브러리 파일을 얻을 때마다 스크립트를 실행하여 테스트 용 버킷을 다시 컴파일하고 실행합니다. 문제는 특히 환경이 가상 인 경우 컴파일이 상당히 오래 걸린다는 것입니다.
.h 헤더 파일을 한 번 컴파일하고 별도의 오브젝트 파일에 넣은 다음 그 많은 .c 소스 파일을 해당 오브젝트 파일에 링크하는 방법이 있습니까? 나는 이것이 컴파일 시간을 단축시킬 것이라고 생각한다. .c 소스 프로그램에서 모든 #include를 변경/제거하고자합니다.
컴파일 시간 단축에 대한 제안 사항에 크게 감사드립니다.
또한 스크립트는 makefile PER .c 소스 테스트 프로그램을 실행한다고 말해야합니다. makefile은 현재 디렉토리의 모든 프로그램을 컴파일하라는 지시를받지 않습니다. 각 테스트 프로그램은 자체 실행 파일로 컴파일됩니다.
헤더 파일이 컴파일되지 않습니다. 그들은 #c 파일에 포함되어 컴파일됩니다. 대부분의 경우 헤더 파일에는 .c 파일에서 함수, 구조체, 데이터 유형 등을 참조 할 수있는 선언이 포함되어 있습니다. –
@master_latch 아쉽게도 헤더 파일을 만든 프로그래머는 실제로 수천 줄의 구현 코드를 작성했습니다. 그들은 선언 용도로 사용하지 않았습니다. .h 파일의 코드는 모든 .c 파일 테스트 프로그램에서 사용되는 공유 코드입니다. 따라서 "미리 컴파일 된 헤더"가 해결책이 될 수 있습니다. 또는 .h 헤더 파일을 포함하는 더미 .c 파일을 만들고이 파일에서 개체를 만든 다음 모든 .c 파일이 그 파일에 링크됩니까? – slowmo
오, 알았어요. 미리 컴파일 된 헤더가 무엇인지는 몰랐습니다.하지만 이제는 MSVS에서 옵션으로 보았던 것을 기억합니다. 누군가 당신의 질문에 대답 할 수있어서 기뻤습니다! –