Tôi muốn ứng dụng Qt/C++ của mình biết phiên bản nào. Nó nên biết rằng không phải từ một số tập tin cấu hình, nhưng với số phiên bản được biên dịch thành nhị phân ứng dụng. Bản thân phiên bản là chuỗi như "XYZ", trong đó X là số phiên bản chính, Y là số phiên bản phụ và Z là bản sửa đổi trong SVN (hoặc số sửa đổi trong SVN trừ đi số sửa đổi khi phiên bản "XY0" xuất hiện). Bạn nghĩ gì là cách đơn giản nhất để thực hiện điều này với scons?Các phương pháp hay nhất để quản lý các phiên bản có scons?
Trả lời
SCons có Substfile
và Textfile
nhà xây dựng để tạo tệp. Vì vậy, hãy tạo một hàm để tính toán phiên bản (bằng cách sử dụng pysvn hoặc bằng cách gọi lệnh svn
) và viết đầu ra của nó vào tệp bằng cách sử dụng Substfile
(lấy mẫu từ tệp) hoặc Textfile
(chỉ viết nội dung được cung cấp). Soạn thảo và liên kết tệp đó với phần còn lại của ứng dụng.
Các tập tin phải là một tập tin nguồn (không một tiêu đề) với nội dung tương tự (giả sử C/C++, nhưng các kỹ thuật tương tự sẽ là thích hợp với ngôn ngữ bất kỳ):
char *VERSION = "X.Y.Z";
(và bất kỳ khác các định dạng thay thế bạn muốn) và khai báo
extern char *VERSION;
ở một nơi nào đó, hơn một tệp sẽ được biên dịch lại và ứng dụng được liên kết lại (do đó một số nguồn khác có thể thay đổi quá, phải).
+1. Đặt giá trị phiên bản trong tệp nguồn là một ý tưởng hay. Tôi thấy hữu ích khi tạo tiêu đề (không cần phải sửa đổi) với các hàm truy cập cho 1. chuỗi phiên bản và 2. cấu trúc phiên bản có các trường riêng biệt cho các giá trị lớn, nhỏ, v.v. –
Cảm ơn câu trả lời, tôi sẽ đi với câu trả lời này. Xin lỗi vì quá chậm để chấp nhận. – Septagram
Ngoài ra, @Dave, đúng vậy. – Septagram
Dưới đây là một số câu trả lời khác đến từ danh sách gửi thư [scons-users].
Brian Cody:
Một dòng lệnh tùy chọn chúng tôi vượt qua thành scons là phiên bản kho lưu trữ của SVN đại diện. Sau đó, chúng tôi đặt số này vào một định nghĩa (-DREP_NUM = \ "123 \") và xây dựng một chuỗi trong mã C++ của chúng tôi sử dụng số số này. Đó là cho máy chủ của chúng tôi chạy các bản dựng . Đối với các bản dựng cục bộ, chúng tôi thực sự sử dụng tên người dùng thay vì số phiên bản , vì ai đó đang xây dựng phiên bản địa phương XYZ không nhất thiết phải bằng XYZ của người khác (trong cửa sổ, env var USERNAME chứa người dùng đã đăng nhập). Một xem xét khác là việc thay đổi bất kỳ phần nào của tuyên bố biên dịch trong các ô có nghĩa là mục tiêu là tự động lỗi thời. Để làm việc xung quanh vấn đề này, hệ thống xây dựng của chúng tôi chọn ra một mục tiêu đối tượng mà thực sự quan tâm đến các cờ và nó chỉ chuyển cờ đến biên soạn một đối tượng đó.
Chúc may mắn
Gary Oberbrunner:
Tôi muốn tôi Qt/C++ ứng dụng để biết phiên bản nào nó được.
Có một số thông tin tại http://www.scons.org/wiki/BuildNumberProcessing có thể hữu ích.
- - Gary
- 1. Các phương pháp hay nhất về quản lý cấu hình và kiểm soát nguồn là gì?
- 2. Các phương pháp hay nhất để phiên bản dịch vụ của bạn với WCF?
- 3. Các phương pháp quản lý mã nguồn
- 4. Các phương pháp hay nhất để tương thích ngược API
- 5. Chuỗi kết nối Các phương pháp hay nhất
- 6. Các phương pháp hay nhất về iFrame
- 7. Các phương pháp hay nhất về Javascript
- 8. Các phương pháp hay nhất để xử lý các chuỗi Unicode trong C# là gì?
- 9. Các phương pháp hay nhất để ký hợp đồng .NET?
- 10. Cập nhật: Các phương pháp hay nhất để quản lý nội dung tĩnh trong khung công tác Zend?
- 11. Các phương pháp hay nhất để sử dụng các vùng sẵn có EC2 là gì?
- 12. Chuỗi Python để liệt kê các phương pháp hay nhất
- 13. Các phương pháp hay nhất để xử lý lỗi trong Perl là gì?
- 14. Các vấn đề cập nhật ứng dụng Android và các phương pháp hay nhất là gì?
- 15. Một số phương pháp hay nhất về quản lý bộ nhớ Java là gì?
- 16. Các phương pháp hay nhất để xử lý lỗi trong dịch vụ web
- 17. Các phương pháp hay nhất để tự cập nhật các ứng dụng PHP + MySQL là gì?
- 18. Các phương pháp hay nhất để nhúng số phiên bản SVN vào tệp kê khai jar Java?
- 19. Các phương pháp hay nhất về Webrequest Webrequest
- 20. Cách quản lý 'hồ bơi' của các phiên bản PhantomJS
- 21. Danh sách SharePoint Các phương pháp hay nhất
- 22. php và mysql, các phương pháp hay nhất
- 23. Các phương pháp hay nhất cho pubnub trên android
- 24. Các phương pháp hay nhất để tự động lưu bản nháp?
- 25. Các phương pháp hay nhất về lược đồ SQL Server
- 26. Các phương pháp hay nhất về Chẩn đoán mạng?
- 27. Powershell cmdlets phát triển các phương pháp hay nhất
- 28. Các phương pháp hay nhất với STDIN trong Ruby?
- 29. Chỉ mục MySQL - các phương pháp hay nhất là gì?
- 30. Tiêu chuẩn mã hóa Python/các phương pháp hay nhất
Nếu mục đích duy nhất của số phiên bản là để hiển thị một cái gì đó cho người sử dụng, một chuỗi là OK. Nếu có bất kỳ quyền truy cập có lập trình nào, bạn sẽ muốn có từng thành phần phiên bản trong một trường riêng biệt (xem http://stackoverflow.com/questions/2195573/why-use-a-nested-ruby-module-for-version- thông tin/2195824 # 2195824). Ngoài ra, để dễ dàng tự động tăng số phiên bản (ví dụ: đối với tập lệnh tạo bản phát hành), việc tách phiên bản thành các trường là một chiến thắng. –