2010-05-03 7 views
1

저는 C++ 프로젝트를 가지고 있으며 빌드 프로세스에 Bakefile을 사용하고 있습니다. 크로스 플랫폼 지원을 위해 msvc, mingw, gnu 등을 위해 Makefile이 생성됩니다.수정을 위해 수정 된 파일을 고려하십시오.

이제 문제는 다른 .cpp 파일에 포함 된 .h 파일을 변경하고 재 작성을 수행하면 수정 된 파일을 다시 컴파일하지 않는다는 것입니다. 그러나 .cpp 파일을 변경하면 다시 컴파일됩니다.

프로젝트에 포함 된 파일의 수정 된 타임 스탬프를 기반으로 해당 파일을 다시 빌드 할 것을 고려해야합니다.

.bkl 파일에 태그로 추가해야하는 항목이 누락 되었습니까? 도와주세요.

+0

필자는 Bakefile에 익숙하지 않지만 의존성 처리 문제에 대해 설명합니다. makefile은'X.h '가'X.o'의 전제 조건임을 알지 못합니다. 나는 1) makefile을보고 Xh가 Xo의 사전인지 확인하기 위해, 2) 문서와 .blk 파일을 확인하여 Bakefile이 종속성에 대해 알아야하는 방법을 확인하고, 3) 자동 종속성 생성을 조사하고, 4) HelloWorld.cpp 및 HelloWorld.h로 후퇴하기. – Beta

+0

코멘트 주셔서 감사합니다. wxWidgets bkl 파일을보고 어떤 단서를 찾을 수 있는지 확인하려고합니다. 지금까지 운이 없습니다. – harik

답변

1

Bakefile 자체는 대상 간의 종속성 만 처리합니다. 소스 파일과 헤더 간의 종속성이 너무 자주 변경되어 메이크 파일에 기록되지 않습니다. 이러한 종류의 종속성은 컴파일해야하며 협력해야하는 컴파일러 make이 처리합니다.

GCC와 GNU는 이것을 잘 지원합니다 (Bakefile의 gnu 또는 autoconf 형식은 적절한 deps 추적을 사용하여 메이크 파일을 생성합니다). 나는 당신의 불만이 특히 nmake (Bakefile의 msvc 형식)이라고 생각합니다. 맞습니까?

여기서 운이 좋지 않습니다. nmake은 (는) 너무 제한되어 있으며 동적 종속성을 지원하지 않습니다. 대신 프로젝트 파일을 생성하고 사용하는 것이 좋습니다. IDE와 vcbuild은 모두 종속성을 추적합니다.

+0

답을 'vslavik'고맙습니다. 나는 우분투에서 GCC make를 확인해야한다. (작동하길 바란다.) mingw 또한 수정 된 파일을 재구성하지 않는다. 프로젝트 파일 생성 제안은 MSVC 옵션과 비슷합니다. – harik

+0

Bakefile에 의해 생성 된 MinGW 메이크 파일은 종속성을 올바르게 추적합니다. 빌드 중에 생성 된 * .d 파일을 참조하십시오. 따라서 문제가 발생하면 잘못된 시스템 시계처럼 다른 곳에있을 수 있습니다. (Bakefile의 주 저자로서, 나는 이것에 대해 매우 확신하고 있으며,'mingw' 형식이 잘못되었다고 생각한다면, http://www.bakefile.org/newticket에서 버그 보고서를 매우 고맙게 생각합니다) –

관련 문제