2013-01-08 31 views
5

Tôi đang sử dụng Autotools cho gói C++ của mình. Gói của tôi có một nhị phân đơn, được gọi là "myprog" chẳng hạn. Tôi đã viết một tập lệnh bash, "test.bash", chứa một bài kiểm tra chức năng. Kịch bản này có 4 bước: (1) tạo tập tin đầu vào, (2) tạo tập tin đầu ra mong đợi, (3) khởi chạy "myprog" trên tập tin đầu vào, (4) so ​​sánh kết quả đầu ra của "prog" với đầu ra mong đợi.Sử dụng "kiểm tra" để khởi chạy tập lệnh bash cho các thử nghiệm sử dụng chương trình nhị phân

Ở bước 3, "test.bash" cần biết đường dẫn đến "myprog". Nếu tôi khởi động "test.bash" trên bản thân độc lập, tôi có thể cung cấp đường dẫn đến "myprog" như một tùy chọn trên dòng lệnh. Nhưng tôi có thể làm gì khi sử dụng make check hoặc make distcheck?

Tôi đang đọc manual of Autotools/Automake. Tôi đoán có một cách bằng cách sử dụng các biến được thiết lập bởi configure, nhưng tôi không thấy làm thế nào để sử dụng chúng, vì vậy bất kỳ giải pháp được hoan nghênh nhiều!

Trả lời

5

Bạn có thể sử dụng biến số TESTS trong Makefile.am và thiết lập biến số AM_TESTS_ENVIRONMENT để chuyển tùy chọn hoặc đặt biến môi trường cho tập lệnh bash. Nó được mô tả trên trang this, theo phong cách haphazard thông thường của sách hướng dẫn tự động.

myprog có thể được xây dựng bên ngoài cây nguồn, bạn có thể đặt biến thành $(top_builddir)/relative/path để sử dụng trong tập lệnh hoặc sử dụng lệnh pwd cho thư mục mà tập lệnh đang được thực thi.

+1

Cuối cùng tôi đã sử dụng $ (abs_top_builddir), cảm ơn. Xem thêm chi tiết về danh sách gửi thư Automake: http://lists.gnu.org/archive/html/automake/2013-01/msg00029.html – tflutre