Đây là từ một kịch bản bash tôi đã sử dụng để xây dựng một chương trình:c makefile với các lệnh shell và các biến
dateString=$(date +%Y/%m/%d\ %H:%M:%S)
revision=(`svn info | grep Revision | tr -d [:alpha:]':'`)
echo "#define VERSION_DATE \"$dateString\"" > version.h
echo "#define VERSION_REVISION \"$revision\"" >> version.h
tôi đã thay đổi từ việc sử dụng build.sh đến một makefile:
version.h:
dateString=$$(date +%Y/%m/%d\ %H:%M:%S)
revision=(`svn info | grep Revision | tr -d [:alpha:]':'`)
echo "#define VERSION_DATE \"$dateString\"" > version.h.tmp
echo "#define VERSION_REVISION \"$revision\"" >> version.h.tmp
mv version.h.tmp version.h
Nhưng tệp version.h kết thúc như sau:
#define VERSION_DATE "\ateString"
#define VERSION_REVISION "\evision"
Tôi không thể nhận được các biến trình bao chính xác. Tôi nghĩ rằng nó bởi vì họ cuối cùng là Makefile vars. Nếu có ai biết làm thế nào để làm điều đó, tôi sẽ không biết làm thế nào. Cảm ơn nhiều.
Tuyệt vời, đã thực hiện công việc, cảm ơn bạn. Cảm ơn Paul cũng vì câu trả lời. –
Lưu ý rằng phiên bản này của tập lệnh không phải là "quốc tế". Trong tiếng Pháp chẳng hạn, bạn nên grep cho "Révision" (chú ý giọng). – Gui13
Nếu bạn có 'svnversion' thực thi, bạn có thể thay thế trực tiếp thông tin' svn dài 'của bạn | grep ... 'bởi nó. Nó cung cấp cho bạn bản sửa đổi trực tiếp. – Gui13