2009-10-25 37 views
19

Có nghĩa là gì khi xây dựng giải pháp/dự án/chương trình? Tôi muốn chắc chắn rằng tôi có các định nghĩa của tôi đúng (vì vậy tôi không nghe như một thằng ngốc khi trò chuyện). Trong IDE, bạn có thể (sửa cho tôi nếu tôi sai) biên dịch mã số mã/lập trình thành mã máy tính có thể đọc được. Bạn có thể gỡ lỗi một chương trình, về cơ bản là bước qua chương trình và tìm lỗi.Định nghĩa lập trình: Chính xác là 'Xây dựng'.

Nhưng chính xác thì xây dựng chương trình nào? Trong VS tôi biết rằng khi bạn xây dựng một chương trình, nó tạo ra một tệp thi hành trong một thư mục gỡ lỗi.

Bất kỳ định nghĩa công nghệ lõi cứng nào về ý nghĩa của việc hiển thị xây dựng một chương trình?

Trả lời

3

này không nhất thiết phải chịu về những gì con người có ý nghĩa về 'xây dựng', nhưng như xa như MSBuild 2.0 là có liên quan, các mã trong Microsoft.Common.targets mô tả nó thusly:

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

đó gợi ý rằng ' xây dựng "có nghĩa là" biên dịch cộng với tất cả các sự kiện phụ trợ liên quan giúp bạn từ các tạo phẩm mã đến một kết quả có thể triển khai ".

3

Nó có nghĩa là quá trình chuyển đổi các tạo phẩm nguồn có thể đọc được thành các tạo phẩm có thể đọc được bằng máy.

37

Xây dựng có nghĩa là nhiều thứ cho nhiều người, nhưng nói chung có nghĩa là bắt đầu với tệp nguồn do nhà phát triển tạo và kết thúc bằng những thứ như gói cài đặt sẵn sàng triển khai.

"Việc xây dựng" có thể chứa nhiều điều:

  • Compilation của file nguồn (cho các ngôn ngữ/môi trường có hỗ trợ một rõ ràng bước riêng biệt/biên dịch)
  • Liên kết của mã đối tượng (cho các ngôn ngữ/môi trường mà hỗ trợ một bước liên kết riêng biệt/rõ ràng)
  • Sản xuất gói phân phối, còn được gọi là "trình cài đặt"
  • Tạo tài liệu được nhúng trong tệp mã nguồn, ví dụ: Doxygen, Javadoc
  • Thi hành kiểm tra tự động như kiểm tra đơn vị, kiểm tra phân tích tĩnh, và kiểm tra hiệu suất
  • Thế hệ của báo cáo mà cho đội ngũ phát triển có bao nhiêu cảnh báo và lỗi xảy ra trong quá trình xây dựng
  • Triển khai gói phân phối. Ví dụ, việc xây dựng có thể tự động triển khai/xuất bản một phiên bản mới của một ứng dụng web (giả sử rằng việc xây dựng thành công).

"Bản dựng" có thể được thực hiện "bằng tay" hoặc nó có thể được tự động hoặc một số kết hợp của cả hai. Xây dựng thủ công là một bản dựng yêu cầu các lệnh xây dựng như các trình biên dịch được thực hiện từng cái một. Một gói xây dựng tự động cùng với tất cả các công cụ xây dựng riêng lẻ vào một chương trình xây dựng lớn có thể (lý tưởng) chạy trong một bước duy nhất.

4

Nhiều dự án liên quan đến nhiều tệp nguồn. Về nguyên tắc, bạn có thể tự biên dịch bất kỳ một tệp nào trong số các tệp đó - bạn sử dụng trình biên dịch để biên dịch tệp nguồn đó thành tệp đối tượng (tạm thời) chứa mã máy.

Trong thực tế, quá tẻ nhạt để tự biên dịch từng tệp nguồn tại một thời điểm, và thậm chí còn tẻ nhạt hơn để theo dõi thủ công các tệp nguồn cần được biên dịch lại. Vì vậy, chúng tôi xây dựng toàn bộ dự án cùng một lúc bằng cách chạy chương trình xây dựng tự động - thường được gọi là "tạo". Chương trình đó trải qua danh sách các tệp nguồn, thường được lưu trữ trong một tệp "nguồn" khác có tên "makefile" và gọi trình biên dịch trên mỗi một - nhiều phiên bản "thực hiện" đủ thông minh để chỉ biên dịch lại các tệp có thay đổi và do đó cần phải được biên dịch lại.

Trong khi biên dịch được cho là phần quan trọng nhất của quá trình xây dựng, thường là "xây dựng" chạy nhiều chương trình khác sau trình biên dịch. Đôi khi, một bản dựng hoàn chỉnh sẽ dành nhiều thời gian hơn để chạy các chương trình khác này ngoài việc chạy trình biên dịch. Ví dụ, nhiều người cảm thấy thuận tiện khi có một nút duy nhất không chỉ biên dịch tất cả mã nguồn thành phiên bản mới nhất, mà còn chạy một loạt các kiểm tra chuẩn (C2: One Button Testing). Ví dụ: Vì vậy, makefile cũng liệt kê bất kỳ lệnh nào là cần thiết để chạy các kiểm tra đó, mà trở thành một phần của quá trình xây dựng.

Các vấn đề liên quan