2009-09-03 41 views
6

Qt có duy trì bất kỳ loại thông tin phiên bản nào về chương trình của bạn như .NET không? Giống như số bản dựng? Hay nó cung cấp một cách dễ dàng để truy cập vào bản sửa đổi SVN?Phiên bản phần mềm tự động Qt?

Trả lời

11

số

Nhưng nếu bạn đang sử dụng qmake sau đó bạn có thể thiết lập cờ biên dịch trong hệ thống xây dựng dựa trên kết quả của các lệnh tùy ý, mà có thể được sử dụng để làm những gì bạn muốn.

Ví dụ, nếu bạn đang sử dụng git, bạn có thể làm một cái gì đó như thế này trong .pro tập tin của bạn:

REVISION = $$system(git rev-parse HEAD) 
DEFINES += APP_REVISION=$$REVISION 

Điều đó sẽ cung cấp cho bạn một APP_REVISION vĩ mô khi biên dịch chương trình của bạn, mà bạn có thể sử dụng như thế này:

// stringize macro 
#define _STR(X) #X 
#define STR(X) _STR(X) 
QTextStream(cout) << "MyApp revision " STR(APP_REVISION) << endl; 
+0

Gọn gàng! Tôi sẽ phải chơi đùa với điều này. Tôi đang sử dụng NetBeans như IDE của tôi và nó xây dựng các tập tin .pro chính nó, vì vậy tôi phải tìm ra cách để có được nó để * không * ghi đè lên thay đổi của tôi. – mpen

+0

Nếu bạn thực hiện 'DEFINES + = APP_REVISION = \\\" $$ REVISION \\\ "' trong tệp dự án của bạn, thì bạn không cần phải gây ô nhiễm các tệp nguồn của bạn với macro 'STR'. –

+0

@Dan: điều này đúng, tuy nhiên vấn đề là số lượng dấu gạch chéo ngược bắt buộc trong ví dụ của bạn là nền tảng cụ thể (thậm chí là shell-specific, như mingw32-make.exe trên windows có thể chạy lệnh thông qua cmd hoặc qua sh tùy thuộc vào môi trường). Tôi nghĩ khá khó để làm đúng. – rohanpm

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