미리 컴파일 된 헤더 (stdafx.h)를 사용하는 Visual Studio 2017 C++ 프로젝트가 있습니다. 다음과 같이Visual Studio 2017은 불필요하게 stdafx.h를 계속 재 컴파일합니까?
내 (간체) 파일 구조는 다음과 같습니다
header1.hpp
header2.hpp
stdafx.h -> includes header1.hpp
code1.cpp -> includes stdafx.h
code2.cpp -> includes stdafx.h and header2.hpp
내가 파일의 라인 #include <header1.hpp>
이 말은, includes header1.hpp
을 말함으로써, 어떤 모호성을 방지하기 위해. (예상대로)
내가
, 모든 세 개의 파일stdafx.h
을 수정 한 후stdafx.h
,code1.cpp
및code2.cpp
은 재 컴파일된다.code1.cpp
을 수정 한 후 (예상대로)code1.cpp
만 다시 컴파일됩니다.내가
,header2.cpp
을 수정 한 후stdafx.h
,code1.cpp
및code2.cpp
재 컴파일 된 세 가지 파일 (예상하지!).
가 나는 항목 3 다른 단지 code2.cpp
, 그리고 모든 것을 컴파일 할 것으로 예상했을 것이다.
가능한 원인은 빌드 관리자가 #include
지시문을 검사하고 따르지 않아서 헤더 파일이 수정되는 경우 모든 것을 다시 컴파일하기 때문입니다.
내 프로젝트가 상당히 크기 때문에 code1.cpp
과 같은 모든 파일을 다시 컴파일하면 상당한 시간이 걸립니다. 나는 header2.hpp
을 stdafx.h
에서 의도적으로 포함시키지 않았다. 왜냐하면 나는 header2.hpp
을 종종 수정하고 단지 code2.cpp
을 사용할 필요가 있기 때문이다. (header2.hpp
은 기능이 code2.cpp
인 템플릿 라이브러리입니다.
이 동작이 필요하며 다른 파일을 다시 컴파일 할 필요가 없다는 것을 Visual Studio에서 인식하도록하려면 어떻게해야합니까?
예상되는 동작처럼 보입니다. 미리 컴파일 된 헤더는 헤더가 변경 될 때마다 다시 컴파일됩니다. – Thebluefish
Visual Studio에서 미리 컴파일 된 헤더를 다시 컴파일하지 않도록 지시하는 방법이 있습니까? – Bernard
단순 - 미리 컴파일 된 헤더를 사용하지 마십시오. – Thebluefish