2013-04-30 2 views
5

이 문제를 해결하는 방법을 아는 사람이 누구인지 궁금합니다. 나는 특정 .cpp 파일을 가지고 있는데, 어떤 이유로 (공백 문자를 추가하는 것조차도) 수정하고 프로젝트를 빌드 할 때 다른 관련이없는 .cpp 파일 (10-20 개)의 호스트를 재 컴파일합니다.Visual Studio 2012에서 관련없는 파일을 다시 컴파일하도록하는 .cpp 파일 변경

그 파일은 다른 파일에 #include하지 않았습니다. (필자는 #cpp 파일을 직접 포함하지 않고 .h) 만 포함하고 생각할 수있는 다른 종속성이 없습니다. Visual Studio를 좋아합니다. 종속성 트리를 오해하거나, 빌드 프로세스와 관련하여 부패한 내부 상태가 있습니다. .sdf, .suo, ipch /, .user 및 object 파일 디렉토리를 삭제하려고 시도했지만 잠시 후에 문제가 다시 나타납니다.

다른 .cpp 파일을 수정하면 해당 파일 만 예상대로 다시 컴파일됩니다.

MSBuild에 대해 조금 알고 있지만 .vxproj 파일에 아무 것도 분명히 표시되지 않습니다. 문제의 .cpp 파일은 ClCompile 항목 그룹에만 한 번 나타나며 해당 헤더는 ClInclude 그룹에만 한 번 나타납니다.

이 벨소리가 울리거나 누군가가이 문제를 추적하고 문제를 해결할 수있는 방법에 대한 조언이 있으면 크게 감사하겠습니다.

업데이트 : msbuild /verbosity:Detailed를 실행하지만 불행히도 관련없는 파일을 컴파일지고있는 이유에 대한 설명이 그냥 불투명

:이 사람에 대한 이해가 알려 만드는 경우

Using "CL" task from assembly "Microsoft.Build.CppTasks.Common.v110, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". 
Task "CL" 
Read Tracking Logs: 
    Debug\cl.read.1.tlog 
Output details (109 of them) were not logged for performance reasons. 
{UnrelatedFile1.cpp} will be compiled as {PROBLEM_FILE.CPP} was modified at 4/30/2013 3:28:02 PM. 
{UnrelatedFile2.cpp} will be compiled as {PROBLEM_FILE.CPP} was modified at 4/30/2013 3:28:02 PM. 
(etc...) 

- 수 CL 업무의 내부 작동에 대한 많은 정보를 찾거나 이러한 비 관련 CPP 파일 간의 종속성을 확인하는 이유는 무엇입니까?

+0

업데이트하여 편집에 대한 내 대답은 그것이 도움이되기를 바랍니다! – paulm

+0

고마움 - 아직 시도 할 기회가 없었으나 얼마전에 포기했습니다. 그러나 곧 다른 시험을 보게됩니다. 헤더 체인이라고 생각하지 마십시오. 문제의 파일 이름에 대해 솔루션의 모든 파일 (바이너리조차도)을 검색했습니다. 이미 알려지지 않은 참조가 없습니다. – QuadrupleA

+0

어디에 포함되어 있는지에 따라 미리 컴파일 된 헤더 문제 일 수도 있습니다. – paulm

답변

1

이 가능성이 높습니다 이유는 다른 번역 단위의

  • 의 일부입니다.
  • 다른 프로젝트에서 파일을 참조했습니다.
  • 뭔가 (아마도 미리 빌드 이벤트) 컴파일러가 변경된 것으로 생각할 수 있도록 파일을 "만지기"만합니다.

업데이트 : * 프로젝트에 더 이상 디스크에없는 "추가 된"파일이있는 경우 또 다른 이유가 있습니다.

당신은 MSBuild에서 가장 높은 출력 레벨 출력을 사용하도록 설정해야이 문제를 디버깅하려면 다음

msbuild /verbosity:Detailed 

msbuild를가한다 : 예를 들어

http://blogs.msdn.com/b/msbuild/archive/2005/09/29/475157.aspx

http://msdn.microsoft.com/en-us/library/vstudio/ms164311.aspx

을 왜 그들을 재건하길 원하는지 말해.

편집 : 당신은 전환의가/SHOWINCLUDES를 사용하여 포함하는 파일을 확인할 수 있습니다 상세한 출력 :

이 상세 대한 편집 답변을

http://msdn.microsoft.com/en-us/library/hdkef6tk(v=vs.80).aspx 일부가 있어야 내가 생각

재 구축을 일으키는 헤더 체인? 또는 자세한 원인은 자세한 로그의 세부 로그입니다.

+0

그 자세한 옵션은 좋은 생각입니다 - 그걸 시도해보고 사물에 어떤 빛이 비치는 지보십시오. – QuadrupleA

+0

이걸 정리하면 파일을 다른 이름으로 바꾼 것만으로 문제를 해결 한 것 같습니다. 나는 원래 이름이 붙어있는 것 같아. 나는 이것을 답으로 표시 할 것이다. – QuadrupleA

+0

음, 파일 이름은 무엇입니까? – paulm

관련 문제