Làm cách nào tôi có thể sử dụng máy chủ xây dựng với Keil uVision4 (MDK-ARM), tập lệnh xây dựng, sử dụng tệp tạo tệp?


13

Tôi muốn chạy các bản dựng hàng ngày hoặc đăng ký / cam kết kích hoạt các bản dựng của các dự án dựa trên Keil MDK-ARM. Cho đến nay tôi đã nhận được mọi thứ với tính năng tệp bó của IDE. Điều này không yêu cầu bạn xây dựng dự án ít nhất một lần với IDE, sau đó đăng ký tệp bó .__i._iacác tệp được liên kết và tạo bởi IDE.

Ngoài ra, IDE đặt nhiều thứ cụ thể của người dùng vào tệp bó như biến Windows PATH. Điều này có thể trở thành một vấn đề với nhiều nhà phát triển, vì tệp bó để xây dựng có thể được thay đổi tại mỗi cam kết từ một nhà phát triển khác nhau.

Cuối cùng, người ta chỉ cần theo dõi các công tắc khác nhau cho armcc , armasmArmLink .

Có cách nào để sử dụng makefile chuẩn hơn để xây dựng các dự án Keil uVision không? Có phương pháp dịch tập tin dự án uVision thành tập lệnh xây dựng dễ bảo trì hơn không?


Tôi nghĩ thật tuyệt khi bạn đang triển khai một máy chủ xây dựng. Thật không may, tôi không có kinh nghiệm với hệ thống phát triển Keil nên tôi thực sự không thể giúp bạn. Tôi muốn khuyến khích bạn đăng một giải pháp nếu bạn làm việc đó.
semaj

Tôi xây dựng các dự án Keil thông qua tập lệnh bó mà không có bất kỳ phụ thuộc PATH nào (ngoài các công cụ Keil) hoặc các tệp __i / _ia. Bạn có thể chia sẻ thêm thông tin về điều này?
Digikata

1
@digikata Tôi đang sử dụng tùy chọn từ trong IDE để tạo tệp bó. Điều này được mô tả trong tài liệu của Keil. Ngoài ra còn có một phương pháp điều khiển dòng lệnh được mô tả ở đây , nhưng tôi gặp khó khăn khi nhận đầu ra giao diện điều khiển thích hợp từ lệnh đó. Phương thức thứ hai bắt đầu một quy trình mới và cung cấp cho bạn tùy chọn sao chép cửa sổ đầu ra sang tệp đầu ra - không phải là phương pháp tốt cho máy chủ xây dựng.
rmaVT

Để tham khảo trong tương lai, phạm vi của câu hỏi này nằm trong một khu vực chồng chéo mà chúng tôi chia sẻ với các trang web Stack Exchange khác. Các câu hỏi về các công cụ cụ thể nhúng như Keil chắc chắn được chào đón ở đây! Họ cũng được chào đón trên Stack Overflow , nhưng cứ thoải mái hỏi ở bất cứ đâu.
Kevin Vermeer

1
@KevinVermeer - Vâng, tôi cũng định nói điều tương tự. rmaVT, bạn có thể thấy duyệt các câu hỏi được gắn thẻ "keil" trên SO cũng mang tính giáo dục như các câu hỏi được gắn thẻ "keil" trên EE SE .
davidcary

Câu trả lời:


8

Đây là phương pháp tốt nhất tôi nghĩ ra gần đây:

Trong tùy chọn xây dựng, chọn tạo tệp bó.

Khi bạn khởi tạo bản dựng từ IDE, một tệp bó cùng với một số tệp văn bản được tạo dựa trên các tùy chọn được đặt trong IDE. Bạn cần theo dõi các tệp IDE được tạo này trong kiểm soát nguồn:

  • *.con dơi
  • * .ini
  • *.__Tôi
  • * ._ tôi
  • * .lnp
  • * .sct

Sau đó, foo.bat có thể được khởi chạy từ một tập lệnh xây dựng.

Mặc dù điều này không tạo ra các tệp bổ sung cần theo dõi trong kiểm soát nguồn nếu bạn muốn xây dựng một cách đáng tin cậy từ tệp bó được tạo, nhưng nó loại bỏ sự cần thiết phải dựa vào tệp dự án Keil (foo.uvproj) và IDE. Tôi thấy việc so sánh sự khác biệt dễ dàng hơn và do đó theo dõi các thay đổi đối với các tệp văn bản được tạo (* .__ i) có chứa các cờ trình biên dịch so với tệp .uvproj. Ngoài ra, tệp bó gọi các công cụ khác nhau, armasm, armcc, armlink, trực tiếp. Điều này cung cấp cho bạn đầu ra trực tiếp của từng bước đó cũng như tiềm năng tốt hơn để di chuyển một dự án sang một chuỗi công cụ khác trong tương lai nếu cần thiết.

Tôi nhận ra câu trả lời này nghe rất giống câu hỏi ban đầu của tôi, nhưng tôi thực sự không biết cách nào tốt hơn để chạy một bản dựng theo kịch bản với các công cụ của Keil. Tôi yêu cầu xem những gì có thể đến từ những người khác. Tôi hoàn toàn không đồng ý với câu trả lời từ @digikata, nhưng tôi thích có cờ trình biên dịch và bản đồ bộ nhớ ở định dạng dễ dàng hơn để theo dõi và sử dụng nhiều công cụ kiểu unix hơn để biên dịch thay vì khởi chạy một trình biên dịch tất cả trong một với IDE. Tôi nghĩ rằng trình biên dịch tất cả trong một từ IDE hoạt động tốt tại máy trạm của tôi, nhưng không phải cho máy chủ xây dựng.

EDIT : Máy chủ xây dựng chạy trên Windows Server 2003. Tôi phải thú nhận rằng tôi đã sử dụng giao diện dòng lệnh IDE chứ không phải là một tệp bó. Điều này chỉ trở nên quá khó để quản lý.


Một câu hỏi về công việc này - máy chủ xây dựng của bạn đang chạy hệ điều hành nào? Linux, Windows 7, Windows Server 2003, Windows Server 2008?
CrimsonX

Cảm ơn đã trả lời câu hỏi! Có vẻ như chuỗi công cụ arm hoạt động trên Windows Server 2003 & 2008 R2 trên Tài liệu của Keil . Một câu hỏi tiếp theo liên quan đến chỉnh sửa của bạn: Làm thế nào để bạn xử lý các thay đổi đối với tệp uvproj (ví dụ: thêm một tệp mới vào dự án để biên dịch)? Bạn có phải thay đổi thủ công các tùy chọn biên dịch trong một tệp được thăng cấp lên máy chủ xây dựng không?
CrimsonX

Bạn phải đặt tệp .uvproj dưới sự kiểm soát nguồn. Điều này hoạt động khá tốt, mặc dù một số tùy chọn người dùng vẫn còn trong tệp mặc dù tệp .userxxxxx cũng được tạo. Máy chủ xây dựng chỉ cần mở cùng một "dự án" và xây dựng nó.
rmaVT

3

Tôi gọi Keil IDE thông qua dòng lệnh để xây dựng (không phải tệp bó được tạo) từ bên trong Makefile. Thông thường, nó hoạt động tốt hơn để khóa các tệp dự án thông qua scm hoặc lấy một bản sao xây dựng tham chiếu đổi tên các tên dự án có liên quan khi thực hiện việc này.

IDE hoàn toàn hài lòng khi làm việc với các tệp dự án chỉ đọc, vì vậy nếu bạn khóa chúng, điều khó chịu là bạn cần mở khóa chúng để thay đổi cài đặt, lưu và kiểm tra lại chúng. Nếu bạn ở mức khá ổn định điểm trong dự án này là khá nhỏ - thậm chí là mong muốn.

Nếu bạn lấy một bản sao tham chiếu, thì bản dựng có xu hướng bị phá vỡ khi cài đặt dự án thay đổi - đặc biệt là khi các tệp dự án được thêm hoặc xóa khỏi quá trình biên dịch. Việc nắm bắt những thay đổi đó không nhất thiết là xấu, nhưng là một bước bổ sung cần thiết để duy trì các bản dựng.

Dù bằng cách nào, chuyển hướng đầu ra sang tệp nhật ký thông qua tùy chọn "-o" cho phép bạn truy cập nhật ký đầu ra đầy đủ. Nhật ký không xuất hiện một dòng tại một thời điểm, nhưng dường như tất cả đều ở đó. (Tôi thực sự phân tích định dạng lỗi Keil thành GNU fmt để tích hợp với môi trường CDT nhật thực. Điều này cho phép tôi chuyển trực tiếp đến các lỗi / cảnh báo sau khi xây dựng)

Bản dựng dòng lệnh cũng tạo ra các tệp __i, __ia để những tệp này không cần phải đi vào kiểm soát phiên bản cho máy chủ bản dựng.

Hi vọng điêu nay co ich.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.