문제

무엇을 의미 하는가 짓다 솔루션/프로젝트/프로그램? 내 정의가 올바른지 확인하고 싶습니다 (대화 할 때 바보처럼 들리지 않습니다). IDE의 경우, 당신은 (내가 틀렸다면 나를 수정할 수 있습니다) 엮다 컴퓨터로 읽을 수있는 기계 코드로의 소스 코드/프로그래밍 코드. 당신은 할 수 있습니다 디버그 기본적으로 프로그램을 밟고 오류를 찾고있는 프로그램.

그러나 정확히 무엇을 하는가 건물 프로그램은? vs에서는 프로그램을 구축 할 때 디버그 폴더에서 실행 파일을 생성한다는 것을 알고 있습니다.

그것이 무엇을 의미하는지에 대한 하드 코어 기술 정의 짓다 프로그램?

도움이 되었습니까?

해결책

이것은 반드시 인간이 '빌드'에 대해 의미하는 바는 아니지만 MSBuild 2.0에 관한 한 Microsoft.common.targets의 코드는 다음과 같이 설명합니다.

...
<!--
============================================================
                                    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>
...

이는 '빌드'가 대략적으로 컴파일하고 코드 아티팩트에서 배포 가능한 결과로 얻을 수있는 모든 관련 보조 이벤트를 컴파일한다는 것을 암시합니다.

다른 팁

건물은 많은 사람들에게 많은 것을 의미하지만 일반적으로 개발자가 제작 한 소스 파일로 시작하고 배포 준비가 된 설치 패키지와 같은 것들로 끝나는 것을 의미합니다..

"빌드"는 많은 것을 포함 할 수 있습니다.

  • 소스 파일 컴파일 (별도/명시 적 컴파일 단계를 지원하는 언어/환경)
  • 객체 코드 연결 (별도/명시 적 연결 단계를 지원하는 언어/환경)
  • "설치 자"라고도하는 분배 패키지 생산
  • 소스 코드 파일에 포함 된 문서 생성 (예 : doxygen, javadoc
  • 단위 테스트, 정적 분석 테스트 및 성능 테스트와 같은 자동 테스트 실행
  • 개발 팀에 건축 중에 발생한 경고 및 오류 수를 알려주는 보고서 생성
  • 배포 패키지 배포. 예를 들어, 빌드는 새 버전의 웹 응용 프로그램을 자동으로 배포/게시 할 수 있습니다 (빌드가 성공했다고 가정).

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

이는 인간이 읽을 수있는 소스 아티팩트를 기계로 읽을 수있는 아티팩트로 변환하는 과정을 의미합니다.

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

실제로, 모든 소스 파일을 한 번에 하나씩 수동으로 컴파일하기에는 너무 지루하고, 어떤 소스 파일을 수동으로 추적 해야하는지 더 지루합니다. 따라서 우리는 일반적으로 "Make"라고하는 자동화 된 빌드 프로그램을 실행하여 전체 프로젝트를 한 번에 구축합니다. 이 프로그램은 종종 "makefile"이라는 다른 "소스"파일에 저장된 소스 파일 목록을 통해 각각의 컴파일러를 호출합니다. 그리고 다시 컴파일해야합니다.

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

예를 들어, 많은 사람들은 모든 소스 코드를 최신 버전으로 컴파일 할뿐만 아니라 표준 시리즈 테스트를 실행하는 것이 편리하다고 생각합니다.C2 : 하나의 버튼 테스트). 따라서 MakeFile은 또한 해당 테스트를 실행하는 데 필요한 명령을 나열하여 빌드 프로세스의 일부가됩니다.

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