2011-12-19 26 views
10

Tôi xác định số phiên bản dự án của mình trong một tệp văn bản thuần túy thay vì configure.ac vì một số lý do. Tôi muốn tạo một câu lệnh có thể đọc số phiên bản và lưu nó trong thời gian biên dịch.Đọc số phiên bản từ một tệp trong configure.ac

Ngay bây giờ configure.ac của tôi trông như thế này:

AC_INIT([my program],[999.9.9]) 

Tôi muốn có một cái gì đó như:

AC_INIT([my program],[ $(cat VERSION) ]) 

này wont work tất nhiên. Bí quyết ở đây là gì? (Tôi biết tôi đang mất một số tính di động - Tôi không quan tâm vào lúc này). Cảm ơn!

Trả lời

22

Hãy thử:

AC_INIT([my program], m4_esyscmd([tr -d '\n' < VERSION])) 

chỉnh sửa với các bản sửa lỗi đề nghị trong các ý kiến.

Tôi cũng đã có thể loại bỏ các phi di tr gọi sử dụng:

AC_INIT([my program], [m4_translit(m4_esyscmd([cat VERSION]),m4_newline)]) 

mà dường như chỉ làm việc là tốt, cũng như các giải pháp được đề xuất bởi Enrico trong các ý kiến ​​dưới đây:

AC_INIT([my program], [m4_esyscmd_s([cat VERSION])]) 
+0

Có cấu hình.acân: cảnh báo: AC_INIT: không phải là chữ: m4_esyscmd ([echo 9.9 | tr -d '\ n']) nhưng * nó hoạt động *! Cảm ơn. – lzap

+4

@lzap: Bạn có thể xóa dấu ngoặc kép quanh 'm4_esyscmd (...)' để nó được đánh giá trước khi gọi 'AC_INIT'. Cách này 'AC_INIT' nhận được một chữ. Tôi cũng sẽ loại bỏ lệnh gọi 'cat', vì hiệu quả:' AC_INIT ([chương trình của tôi], m4_esyscmd ([tr -d '\ n' adl

+0

@adl Đăng câu trả lời đó và tôi sẽ upvote it :) – legoscia

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