문제

C++ Builder 6이 항상 모든 파일을 컴파일하는 이유는 무엇입니까?

하나의 파일을 일부 변경했지만 앱을 시작할 때 BCB 6이 모든 파일을 컴파일합니다.어떤 아이디어?저는 Windows XP SP2를 사용하고 있습니다.

도움이 되었습니까?

해결책

BCB 컴파일러용으로 이 플러그인을 사용해 보세요:Bcc32Pch IDE 플러그인

다른 팁

소스 파일과 바이너리 개체가 동일한 시스템에 있습니까?그렇지 않다면 네트워크 시간 동기화 문제가 있는 것 같습니다.

헤더 파일 문제일 가능성이 가장 높은 경우 컴파일러 포함 파일의 날짜가 미래에 수정되었거나 응용 프로그램이 컴파일 중에 COM 가져오기에서 변경되는 일부 헤더 파일에 종속되어 있는 것입니다.

편집하다:VS 설정에 항상 재컴파일하는 플래그가 있는지 확인하세요. 이는 BCB에도 해당될 수 있습니다. 설정된 경우 설정을 해제하세요.또 다른 가능성은 사전 컴파일된 헤더가 모든 소스 파일에서 생성되도록 잘못 구성되어 있다는 것입니다.

좀 더 정확한 답변을 드리기에는 BCB 6에 익숙하지 않습니다.

특정 모듈에 종속된 파일 전체 또는 다수를 만들었습니까?

특정 모듈에 종속된 모든 파일은 모듈 클래스 구조(.h 파일에 포함됨)가 수정될 때마다 다시 작성됩니다.예를 들어, 다른 많은 모듈에서 액세스하는 데이터 모듈이 있는 경우 데이터 모듈의 클래스 구조가 수정될 때마다 모든 종속 모듈이 다시 빌드되는 것을 볼 수 있습니다.

Borland에는 재컴파일되는 코드 줄 수를 제어하는 ​​pragma가 있습니다.

지난 몇 년 동안 나는 (일부 프로젝트에서) 내 소스의 변경 사항만 컴파일하도록 관리했습니다.이것이 최신 버전의 볼랜드에서 작동하는지 모르겠습니다.

Borland 6에는 pragma "hdrstop"이 있습니다.프로젝트 옵션 "사전 컴파일 헤더"가 "없음"이 아닌 경우에만 활성화됩니다.

몇 년 전 나는 컴퓨터가 매우 느려서 다음 트릭을 사용하여 컴파일 시간을 몇 시간에서 몇 분으로 가속화했습니다.

모든 cpp가 이 첫 번째 줄이 되었습니다.

#include "all.h"
#pragma hdrstop

기본값은 "vcl.h"를 ​​포함했습니다.

"all.h"에는 필요한 모든 헤더가 포함됩니다!단위.모든 유닛은 헤더에 따라 모든 소스를 건너뜁니다. ~ 전에 pragma hdrstop.

예:

단위1.h

 #include <string>

Unit1.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit1.h"

단위2.h

 #include <vcl>

Unit2.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit2.h"

모두.h

   #include <string>
   #include <vcl>

가져오기

  1. 헤더 파일에 all.h를 사용하지 마세요
  2. 다음과 같이 프로젝트 헤더에 사용되는 모든 포함을 추가할 수 있습니다.
  3. "사전 컴파일된 헤더"에 의존하는 모든 소스는 다시 컴파일되지 않습니다!
  4. 미리 컴파일된 헤더 생성 속도가 느려집니다!따라서 자주 변경되지 않는 헤더만 all.h에 추가하세요.시스템 헤더나 헤더가 이미 완료된 것과 같습니다.
  5. 컴파일이 실패할 수 있습니다.때로는 포함 순서로 인해 편집에 "교착 상태"가 발생하는 경우도 있습니다.그런 일이 발생하면 "사전 컴파일된 헤더"를 비활성화하세요.Java에서와 같이 C++를 작성하면 대부분의 문제가 해결됩니다.모든 클래스는 자신의 파일(cpp 및 h)이 됩니다.
  6. 프로젝트 옵션 "사전 컴파일된 헤더"의 파일 이름은 실제 사전 컴파일된 파일의 기본 이름을 표시합니다."pragma hdrstop" 앞에 동일한 내용이 (정확히) 포함되어 있는 경우 해당 유닛은 미리 컴파일된 파일을 다른 유닛과 공유할 수 있습니다.숫자 접미사가 있는 파일이 하나만 있는 경우 최상의 성능에 도달합니다.미리 컴파일된 헤더가 두 개 이상인 경우의 예:

단위1.h

 #include <string>

Unit1.cpp

   #include "all.h"
   #pragma hdrstop

   #include "Unit1.h"

단위2.h

 #include <vcl>

Unit2.cpp

   #include <vcl> //!!!!!!!!!!!!!!!!!!! produce a second version of an precompiled file
   #pragma hdrstop

   #include "Unit2.h"

모두.h

  #include <string>
  #include <vcl>

꼭 필요한 경우가 아니면 "build" 명령이 아닌 "make" 명령을 사용하고 있는지 확인하십시오.

Borland 도구를 사용하여 프로젝트를 만들면 항상 문제가 있는 것 같습니다. 즉, 어떤 것이 변경되었는지 반드시 알아차리지 못하고 모든 것을 컴파일하기 시작한다는 것입니다.

작업 속도를 높이는 데 도움이 될 수 있는 사전 컴파일된 헤더 옵션을 살펴보세요.

C++Builder 2007부터 Borland/CodeGear가 MSBuild 시스템으로 전환하자 컴파일 속도가 훨씬 빨라지고 효율적이 되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top