2009-10-25 2 views
19

무엇을 의미합니까? 빌드 솔루션/프로젝트/프로그램? 나는 나의 정의가 정확한지 확인하고 싶다. (나는 대화 할 때 바보처럼 들리지 않는다.) IDE에서, 당신은 (내가 틀렸다면 나를 바로 잡을 수 있습니다) 소스 코드/프로그래밍 코드를 컴퓨터가 읽을 수있는 기계어 코드로 컴파일하십시오. 디버그가 가능합니다. 기본적으로 프로그램을 단계별로 실행하고 오류를 찾고 있습니다.프로그래밍 정의 : 정확히 'Building'이란 무엇입니까?

하지만 정확히 무엇 건물 프로그램 할합니까? VS에서는 프로그램을 빌드 할 때 디버그 폴더에 실행 파일이 생성된다는 것을 알고 있습니다.

하드 코어 기술이란 무엇을 의미합니까? 빌드 프로그램이란 무엇입니까?

답변

3

: '제안

... 
<!-- 
============================================================ 
            Build 

The main build entry point. 
============================================================ 
--> 
<PropertyGroup> 
    <BuildDependsOn> 
     BeforeBuild; 
     CoreBuild; 
     AfterBuild 
    </BuildDependsOn> 
</PropertyGroup> 
<Target 
    Name="Build" 
    Condition=" '$(_InvalidConfigurationWarning)' != 'true' " 
    DependsOnTargets="$(BuildDependsOn)" 
    Outputs="$(TargetPath)"/> 

<!-- 
============================================================ 
            BeforeBuild 

Redefine this target in your project in order to run tasks just before Build 
============================================================ 
--> 
<Target Name="BeforeBuild"/> 

<!-- 
============================================================ 
            AfterBuild 

Redefine this target in your project in order to run tasks just after Build 
============================================================ 
--> 
<Target Name="AfterBuild"/> 

<!-- 
============================================================ 
            CoreBuild 

The core build step calls each of the build targets. 
============================================================ 
--> 
<PropertyGroup> 
    <CoreBuildDependsOn> 
      BuildOnlySettings; 
      PrepareForBuild; 
      PreBuildEvent; 
      UnmanagedUnregistration; 
      ResolveReferences; 
      PrepareResources; 
      ResolveKeySource; 
      Compile; 
      GenerateSerializationAssemblies; 
      CreateSatelliteAssemblies; 
      GenerateManifests; 
      GetTargetPath; 
      PrepareForRun; 
      UnmanagedRegistration; 
      IncrementalClean; 
      PostBuildEvent 
    </CoreBuildDependsOn> 
</PropertyGroup> 
<Target 
    Name="CoreBuild" 
    DependsOnTargets="$(CoreBuildDependsOn)"> 

    <OnError ExecuteTargets="_TimeStampAfterCompile;PostBuildEvent" Condition="'$(RunPostBuildEvent)'=='Always' or '$(RunPostBuildEvent)'=='OnOutputUpdated'"/> 
    <OnError ExecuteTargets="_CleanRecordFileWrites"/> 

</Target> 
... 

대략 "컴파일하고 코드 생성물에서 전개 가능한 결과로 연결되는 모든 보조 이벤트를 컴파일합니다."

3

사람이 읽을 수있는 소스 아티팩트를 기계 가독성 아티팩트로 변환하는 프로세스를 의미합니다.

37

건물이란 많은 사람들을 의미하지만, 일반적으로 은 개발자가 제작 한 소스 파일로 시작하여 배포 준비가 완료된 설치 패키지로 끝납니다..

"빌드는"많은 것을 포함 할 수 있습니다 : 소스 파일의

  • 컴파일 오브젝트 코드의
  • 링크하기 (언어/별도/명시 적 컴파일 단계를 지원하는 환경) (언어/환경을 그 별도의/명시 적 연결 단계 지원)
  • "설치 관리자"라고도하는 배포 패키지 제작
  • 소스 코드 파일 내에 포함 된 설명서 생성 단위 테스트, 정적 분석 테스트 및 성능 테스트 많은 경고 및 오류 빌드 배포 패키지의
  • 배포 중에 발생하는 방법을 개발 팀에게 보고서의
  • 세대와 같은 자동화 된 테스트의 Doxygen을, 자바 독
  • 실행. 예를 들어, 빌드가 자동으로 웹 응용 프로그램의 새 버전을 배포/게시 할 수 있습니다 (빌드가 성공적이라고 가정).

"빌드"는 "손으로"수행 할 수도 있고 자동화 할 수도 있고 두 개를 혼용 할 수도 있습니다. 수동 빌드는 컴파일러와 같은 빌드 명령을 하나씩 실행해야하는 빌드입니다. 자동화 된 빌드는 모든 개별 빌드 도구를 하나의 단계로 (이상적으로) 실행할 수있는 대형 빌드 프로그램으로 패키지화합니다.

이 반드시 인간이 '빌드'에 대해 무엇을 의미하는지에 대한 부담하지 않지만, 지금까지의 MSBuild 2.0에 관한 한, Microsoft.Common.targets의 코드가 thusly 히를 설명
4

많은 프로젝트에는 많은 소스 파일이 관련되어 있습니다. 원칙적으로 이러한 파일 중 하나만 수동으로 컴파일 할 수 있습니다. 컴파일러를 사용하여 해당 소스 파일을 머신 코드가 포함 된 (임시) 객체 파일로 컴파일합니다.

실제로는 모든 소스 파일을 수동으로 한 번에 하나씩 컴파일하는 것이 너무 번거로우십니까? 그리고 어떤 소스 파일을 다시 컴파일해야하는지 수동으로 추적하는 것이 지루합니다. 그래서 일반적으로 "make"라고하는 자동화 된 빌드 프로그램을 실행하여 전체 프로젝트를 한 번에 빌드합니다. 그 프로그램은 종종 "makefile"이라는 또 다른 "소스"파일에 저장되어있는 소스 파일 목록을 거치고 각 컴파일러를 호출합니다. "make"의 많은 버전은 똑같은 파일 만 다시 컴파일 할만큼 똑똑합니다. 변경되었으므로 다시 컴파일해야합니다.

컴파일 작업은 빌드 프로세스에서 가장 중요한 부분이지만, 종종 "빌드"는 컴파일러 이후에 많은 다른 프로그램을 실행합니다. 때때로 완전한 빌드는 컴파일러를 실행하는 것보다 다른 프로그램을 실행하는 데 더 많은 시간을 소비합니다.

예를 들어 많은 사람들이 단일 버튼을 사용하여 모든 소스 코드를 최신 버전으로 컴파일 할 수있을뿐만 아니라 일련의 표준 테스트 (C2: One Button Testing)를 실행하는 것이 편리하다는 것을 알게되었습니다. 그래서 makefile은 빌드 프로세스의 일부가되는 테스트를 실행하는 데 필요한 명령을 나열합니다.

관련 문제