‫Xin chào và chào mừng.
‫Trong bài giảng này, chúng ta sẽ tìm hiểu các bước chính liên quan đến việc biên dịch tệp C ++ trong
‫Unreal.
‫Hãy đi sâu vào và xem chúng hoạt động như thế nào.
‫Vì vậy, sẽ sớm đến lúc chúng ta bắt đầu sử dụng mã từ bên ngoài, từ các tệp khác và chúng ta cần tìm hiểu cách
‫thức hoạt động của điều này trong C ++.
‫Để làm được điều đó, chúng ta cần đi đường vòng một chút và hiểu chi tiết hơn điều
‫gì đang xảy ra khi chúng ta biên dịch mã C ++ của mình thành nhị phân.
‫Vì vậy, đây là các bước biên dịch được sử dụng.
‫Chúng tôi bắt đầu với mã của bạn, tệp C ++ của bạn, tệp tiêu đề của bạn, tất cả trong các tệp văn bản khác nhau.
‫Chúng được đưa vào một công cụ có tên là Unreal Header Tool.
‫Bây giờ, công cụ này chịu trách nhiệm lấy tất cả các phần cú pháp cụ thể không có thực và sử dụng
‫chúng để tạo thêm mã C ++.
‫Vì vậy, chúng ta hãy xem một số ví dụ về nơi chúng ta có cú pháp cụ thể không thực
‫này, lớp mới này được viết hoa là cú pháp cụ thể không thực, và API Crypt Reader ở đây và phần thân được tạo
‫ở đó cũng vậy.
‫Và về cơ bản những gì đang diễn ra ở đây là công cụ tiêu đề không thực sẽ thấy những phần cú pháp khác nhau này trong mã của bạn và
‫bắt đầu, được rồi, tôi cần phải làm công việc của mình.
‫Tôi cần phải vào đó, tôi cần thêm một đống thứ.
‫Nó sẽ thay thế phần thân đã tạo của bạn bằng một loạt mã giúp cuộc sống của chúng ta dễ dàng hơn khi
‫sử dụng Unreal.
‫Nó cũng thực hiện những thứ như thuộc tính U và các chức năng mới.
‫Nó bổ sung tất cả những thứ cần thiết để có thể giao tiếp với thế giới bản thiết kế.
‫Vì vậy, đó là bước đầu tiên.
‫Nó chuyển đổi tất cả những thứ cụ thể không có thực của nó thành C ++ thực tế.
‫Khi chúng ta đã có C ++ thực, sau đó chúng ta có thể đưa nó vào quy trình biên dịch C ++ tiêu chuẩn, quy trình
‫này thực hiện ba bước.
‫Đầu tiên là xử lý bước tiền xử lý để bước này thực sự có thể chạm vào bất kỳ cú pháp C ++ nào và thực sự chỉ xử
‫lý với các dòng bắt đầu bằng một hàm băm.
‫Vì vậy, chúng tôi có một vài chỉ thị tiền xử lý này.
‫Những điều này được xử lý bởi bộ xử lý trước.
‫Bước tiếp theo là những gì chúng ta thực sự gọi là trình biên dịch.
‫Nó cần một đoạn mã và chuyển nó thành dạng nhị phân có thể thực thi được, nhưng nó không hoàn thành bước này vì nó chỉ
‫thực hiện trên C ++ riêng lẻ, những gì được gọi là đơn vị dịch, về cơ bản là các tệp C ++.
‫Vì vậy, nó cần một tệp C ++ và nó chuyển nó thành tệp nhị phân riêng lẻ, mỗi tệp C ++ riêng lẻ.
‫Và sau đó, bước thứ ba là trình liên kết, mang tất cả những thứ đó lại với nhau và xuất ra một tệp thực thi mà chúng ta
‫thực sự có thể chạy một tệp thực thi duy nhất.
‫Vì vậy, chúng ta hãy xem xét các bước biên dịch tiêu chuẩn này chi tiết hơn một chút với một tệp
‫ví dụ.
‫Vì vậy, hãy tưởng tượng rằng chúng tôi đã có một trò chơi.
‫CP Và đó là một trò chơi rất, rất đơn giản vì tất cả những gì nó làm là thêm một và một với nhau, nhưng
‫để thêm một và một với nhau thì bạn phải sử dụng một hàm được khai báo trong một tệp khác trong phép toán.
‫H Vậy phép toán khai báo.
‫AD, nhưng nó không thực sự xác định những gì nó làm.
‫Vì vậy, điều đó đã được hoàn thành trong toán học.
‫CP Và bạn có thể thấy nó thực sự rất đơn giản.
‫Bây giờ điều gì xảy ra ở bước tiền xử lý?
‫Như tôi đã nói, nó xử lý mọi chỉ thị tiền xử lý, là những thứ bắt đầu bằng một hàm
‫băm.
‫Vì vậy, hàm băm bao gồm toán học, về cơ bản có nghĩa là chỉ cần sao chép mọi thứ bằng toán học vào đây.
‫Vì vậy, những gì nó làm là nó lấy hai tệp này và nó kết hợp chúng với nhau để tạo ra
‫một tệp đầu ra mới có tên là Trò chơi mà tôi về cơ bản là các trò chơi bao gồm và bạn có thể thấy rằng nó được
‫bao gồm định nghĩa từ Master H và nó thay thế chỉ thị tiền xử lý băm.
‫Vì vậy, bây giờ Game II đã có một định nghĩa cho hoạt động ADD và sau đó chúng tôi chạy bộ tiền xử lý trên DHCP toán học.
‫Nhưng vì nó không có bất kỳ chỉ thị tiền xử lý nào nên về cơ bản không có gì thay đổi ở đó.
‫Bước tiếp theo là biên dịch có lẽ là bước quan trọng và phức tạp nhất,
‫bởi vì những gì nó làm là lấy C ++ trong từng tệp riêng lẻ và chuyển nó thành nhị phân, nhưng nó không phải là nhị phân
‫hoàn chỉnh vì ví dụ, trò chơi của tôi không thực sự biết làm thế nào để thực hiện AD, nó chỉ biết hình dạng
‫của chức năng thêm đó.
‫Vì vậy, điều đó cần được điền vào sau và được điền bởi trình liên kết.
‫Vì vậy, trình liên kết sẽ lấy tệp nhị phân được tạo cho tệp obj trò chơi và tệp nhị phân được tạo cho
‫tệp chính và kết hợp chúng lại với nhau để tạo trò chơi.
‫XY kết hợp nhị phân cho cả hai và cuối cùng là một tệp thực thi hoàn chỉnh mà chúng ta thực sự có thể
‫chạy vì nó có định nghĩa cho mọi thứ nó cần.
‫Bây giờ, tại sao chúng ta lại có một quy trình phức tạp như vậy?
‫Ý tưởng ở đây là nó tăng tốc thời gian biên dịch của chúng tôi bởi vì nếu tôi chỉ thực hiện một thay đổi.
‫Để chơi trò chơi DHCP.
‫Tôi thực sự không cần phải chạy toàn bộ quá trình biên dịch.
‫Tất cả những gì tôi phải làm là chạy các bit liên quan đến DHCP trò chơi, vì vậy tôi chỉ chạy bộ tiền xử lý
‫trên CP, sau đó tôi sẽ chỉ chạy trình biên dịch trên trò chơi và sau đó tôi có thể sử dụng lại tệp obj toán học từ trước đó.
‫Tôi không cần phải biên dịch lại nó vì không có gì thay đổi trong đó.
‫Tương tự, nếu tôi chỉ thay đổi CP dot toán học, tôi sẽ không phải biên dịch lại tệp obj trò chơi, đó là lý do tại sao đây là
‫một quy trình hiệu quả hơn và tại sao chúng tôi đang thực hiện nó ngay từ đầu.
‫Vì vậy, tôi muốn chúng tôi thực hiện một thử nghiệm nhỏ và thử và tìm ra lý do tại sao chúng tôi đưa chữ H
‫vào và di chuyển tệp CP?
‫Lý do cho nó là gì?
‫Tại sao chúng ta không thể biên dịch tệp C ++ mà không bao gồm cả tệp đã di chuyển?
‫H Vì vậy, thử nghiệm chúng tôi sẽ thực hiện là chúng tôi sẽ nhận xét ra dòng bao gồm băm.
‫Vì vậy, sử dụng dấu gạch chéo kép để đưa ra nhận xét ở phía trước dòng đó, về cơ bản sẽ
‫làm cho nó bị bộ xử lý loại bỏ thay vì bộ xử lý trước thay thế nó bằng nội dung
‫của tệp.
‫Sau đó, chúng tôi sẽ biên dịch lại và tôi muốn bạn xem các thông báo lỗi xuất hiện và xem nó nói
‫gì để xem liệu bạn có thể thử và hiểu chúng tôi đưa vào động thái này để làm gì không.
‫Tạm dừng video và tiếp tục.
‫Được chứ.
‫Chào mừng trở lại.
‫Vì vậy, hãy đặt một dấu gạch chéo kép về phía trước ở đầu dòng này, về cơ bản làm cho nó
‫vô hiệu.
‫Và sau đó chúng ta sẽ thực hiện điều khiển alt f 11 và chúng ta sẽ xem xét đầu ra của mã hóa trực tiếp.
‫Vì vậy, hãy nhìn xem, chúng tôi đã có một số lỗi ngay từ rất sớm.
‫Và những gì nó đang nói là bạn di chuyển không phải là một lớp hoặc không gian tên và có một số nội dung khác ở
‫đây.
‫Nó nói rằng thành phần công nghệ chính đã không được khai báo rằng super không phải là một lớp hoặc chủ sở hữu
‫không gian tên là một định danh không xác định.
‫Và về cơ bản những gì điều này đang nói là bạn đã nói về bạn động lực ở đây, nhưng bạn chưa định nghĩa nó
‫ở đâu, bạn chưa khai báo nó ở đâu.
‫Vì vậy, tôi không biết.
‫Trình biên dịch C ++ cho biết, tôi không biết đây là gì.
‫Vì vậy, đó là lý do tại sao chúng ta là hash, bao gồm mover H vì mover H khai báo lớp.
‫Nó nói U mover là một lớp và nó bắt nguồn từ việc bạn hành động một thành phần và nó có các phương thức này, v.v.
‫Nó khai báo ý nghĩa của lớp đó.
‫Vì vậy, nếu không có khai báo đó, trình biên dịch C ++ không thể tiếp tục.
‫Và đó là lý do tại sao chúng ta cần đưa vào tệp tiêu đề đó.
‫Công cụ tuyệt vời.
‫Vì vậy, hy vọng bây giờ bạn đã hiểu rõ hơn một chút về quy trình liên quan đến quá trình biên dịch C ++ và đặc
‫biệt là quá trình biên dịch C ++ trong Unreal.
‫Hẹn gặp lại các bạn trong bài giảng tiếp theo.