빌드시에 문제가 발생할 경우 제일 처음 문제를 파악하는 방법은 출력창에서 빌드시에 발생한 출력내용을 확인 하는 방법입니다. 하지만 보통의 경우 기본적인 로그만으로는 문제를 파악하기가 힘듭니다.

 

 

 

 

로그를 좀더 세세한 부분까지 출력하는 방법이 있습니다. 아래의 그림 처럼 출력 레벨을 Diagnostic으로 변경해주세요.

 

Tools - Options - Projects and Solutions - Build and Run

 

 

 

 

저 같은 경우 출력창에 아래의 내용이 보였습니다. 현재 TEAM PROJECTS 가 D드라이브로 옮겼는데 출력 로그에는

C드라이브를 참조하고 있습니다. 저번주에 C드라이브에 있던 프로젝트들을 전부 D드라이브로 이동 시켰는데 마치 옮기지

않은 것처럼 기존 드라이브를 참조하고 있어서 문제가 된 것이란걸 알아냈습니다.

 

Target "ManagedIncrementalBuildPreProcessDependencyGraph: (TargetId:44)" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MetaGen.targets" from project "E:\My Team Projects\1.Work\Server\Gate\Source\CSEngine\Packet\Packet.vcxproj" (target "ClCompile" depends on it):
Using "MIBPreProcessDependencyGraph" task from assembly "Microsoft.Build.CppTasks.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "MIBPreProcessDependencyGraph" (TaskId:23)
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MetaGen.targets(91,5): warning : Required file "C:\TEAM PROJECTS\NETWORK.DLL" is missing.
  The previous error was converted to a warning because the task was called with ContinueOnError=true. (TaskId:23)
Done executing task "MIBPreProcessDependencyGraph". (TaskId:23)
Done building target "ManagedIncrementalBuildPreProcessDependencyGraph" in project "Packet.vcxproj".: (TargetId:44)

 

 

 

결론 :

 

 VS 는 빌드를 한 후의 그에 대한 결과물의 절대경로를 어딘가에 저장해 둡니다. 이후에 다시 빌드를 할지 안할지의

여부를 결정하기 위해서 입니다. 근데 그 절대 경로를 저장한 디버깅 파일을 포함한 전체 소스 폴더를 이동해버리면 빌드시에 해당 파일을 참조하려 하는데 없으니 'These projects are out of update' 란 내용의 메시지 박스를 띄운후 빌드를 시도합니다.

 

 빌드를 한 후에 출력 파일은 현재의 제대로된 파일에 저장되지만 참조에 관한 출력물의 위치는 기존 폴더를 계속 참조하고 있다는 것입니다.

 

 저같은 경우 C드라이브에 있던 프로젝트를 D 드라이브로 옮겨서 발생한 문제입니다.

그로 인해서 아래와 같은 내용이 무한 반복이 됩니다.

 

빌드 시도 => C 드라이브에 출력물이 없슴 => 빌드 => D 드라이브에 출력물 저장

 

좀 복잡해 보일수 있는데 기억해야 할것은 소스폴더의 위치를 옮기면 항상 리빌드를 해주어야 한다는 것입니다.

 

 

 

 

 

 


Posted by great-artist
,