Tôi hiện đang làm việc trên một dự án Linux bằng cách sử dụng các autotools. Mã được gửi trong SCM (Perforce) và chúng tôi có kịch bản cấu hình, Makefile.am, Makefile.in - các bản mẫu tự động thường dùng. Gần đây, ai đó đã thay đổi Makefile.am, nhưng quên tạo lại Makefile.in; khi tôi đã cố gắng để xây dựng, tôi đã nhận lỗi này:phiên bản tự động (am__api_version) được mã hóa cứng trong tập lệnh cấu hình
WARNING: `automake-1.11' is missing on your system. You should only need it if
you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
You might want to install the `Automake' and `Perl' packages.
Grab them from any GNU archive site.
cd . && /bin/bash ./config.status Makefile depfiles
tôi thấy phiên bản automake là hardcoded trong kịch bản cấu hình (và dường như đến từ aclocal.m4):
am__api_version='1.11'
Vì vậy, tôi đoán Tôi cần automake-1.11 (không 1.10, không phải bất cứ điều gì mới hơn) để tái tạo các tập tin Makefile.in.
Tại sao lại như vậy? Tại sao chúng ta nên gắn liền với một phiên bản automake cụ thể? Chúng tôi chủ yếu xây dựng trên Ubuntu 14.04, trong đó 1.14 là phiên bản mặc định được cài đặt. Có cách nào để nói với hệ thống xây dựng để chỉ đơn giản là sử dụng bất kỳ phiên bản của automake được cài đặt? Hoặc là nó an toàn để có thể loại bỏ các định nghĩa am__api_version từ aclocal.m4?
tôi sẽ xác định "bản mẫu autotools bình thường" để được 'configure.ac' và 'Makefile.am' .Đó là mục đích của hai tệp này là tạo ra kịch bản lệnh 'configure',' Makefile.in', 'Makefile' và các tạo phẩm khác hỗ trợ xây dựng. Các tệp được tạo không cần (thực sự, không nên) được thêm vào bất kỳ điều khiển nguồn nào. – rubicks