2012-01-17 25 views
5

Tôi có một chương trình C++ chạy trên hệ thống nhúng. Khi máy khách gặp sự cố, anh ta gửi cho tôi một tệp nhật ký. Và nó sẽ là tuyệt vời để xem chính xác khi nào nhị phân được xây dựng trong nhật ký. Vì vậy, hiện nay tôi sử dụng phương pháp này đơn giản nhưng rất hiệu quả:làm cách nào để triển khai chức năng tương tự như linux/proc/version trong chương trình C++?

...

const std::string APP_BUILD = "2012.01.17.18:28"; 

int main() 
{ 
    std::cout << "Was built: " << APP_BUILT << std::endl; 
} 

Những gì tôi muốn làm là để thiết lập APP_BUILD tự động trong xây dựng. Tôi biết rằng Linux có/proc/phiên bản biến có thể được đọc để xác định thời gian xây dựng. Lần đọc của tôi

cat /proc/version 
Linux version 2.6.38-13-generic ([email protected]) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)) #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 

Việc này có thể thực hiện được không? (Tôi đang xây dựng ứng dụng của mình trong Linux).

+1

Kiểm tra GCC [macro được xác định trước] (http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html), một số dữ liệu bạn muốn được tìm thấy ở đó. –

+0

Nếu bạn đang sử dụng một số hệ thống kiểm soát phiên bản (và bạn nên), bạn có thể cũng muốn nhúng một số chuỗi nhận dạng duy nhất phiên bản cụ thể. –

+0

Vâng, tôi đang sử dụng Mercurial. Có cách nào làm được việc này không? –

Trả lời

9

Có vẻ như bạn đang tìm kiếm các macro __DATE____TIME__. Các macro chuẩn này có sẵn trong cả C và C++.

Xem, ví dụ: gcc manual.

+0

Cảm ơn bạn! Hoàn toàn quên nó đi. –

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