2012-03-11 44 views
9

Tôi có một số Makefile.am để biên dịch mã nguồn Ocaml với ocamlbuild. Tuy nhiên, mặc dù tôi có Suppress "nguồn C nhìn thấy nhưng` CC` undefined "trong automake?

AM_INIT_AUTOMAKE([foreign no-dependencies]) 

trong configure.ac tôi, automake nghĩ rằng một trình biên dịch C phải có mặt để cài đặt exectuables. Đó là, nếu tôi đặt trong Makefile.am một mục tiêu thực thi dưới bin_PROGRAMS đó là được xây dựng với ocamlbuild, autoreconf (phiên bản 1.11.3) nói với tôi:

Makefile.am: C source seen but `CC' is undefined 
Makefile.am: The usual way to define `CC' is to add `AC_PROG_CC' 
Makefile.am: to `configure.ac' and run `autoconf' again. 
autoreconf: automake failed with exit status: 1 

Tôi không muốn bao gồm AC_PROG_CC vì nguồn của tôi mã bao gồm không có C. Đó là Ocaml tinh khiết. Tôi có thể làm gì? (Tôi có cùng một vấn đề với libexec_PROGRAMS.)

Trả lời

5

Nó có thể không cần thiết, nhưng nó sẽ làm tổn thương bất cứ điều gì để chỉ cần thêm AC_PROG_CC để Makefile.am? Con đường của sự kháng cự ít nhất và tất cả.

Làm việc tắt nhắn mailing list thập kỷ tuổi này:

http://lists.gnu.org/archive/html/automake/2003-01/msg00057.html

Có vẻ như bạn có thể cần phải xác định progname_SOURCES như trống rỗng. Nếu tôi hiểu bài đăng chính xác, nếu bạn bỏ qua một khai báo rõ ràng, progname_SOURCES sẽ ngầm định được định nghĩa là progname.c.

+0

'AC_PROG_CC' có thể sẽ thêm các thử nghiệm không cần thiết, làm chậm 'cấu hình'. – ldav1s

+0

Đây là cách mọi thứ nên được thực hiện. Chỉ cần đặt 'progname_SOURCES' thành giá trị trống. Vì vậy, tôi tuyên bố rằng đây là "câu trả lời được chấp nhận". –

+0

Tôi đã đấu tranh chống lại một vấn đề tương tự cho đến khi tôi đọc câu trả lời này và nhận ra rằng "progname" của tôi chứa các ký tự không hợp lệ ('+'). Mọi thứ đều tốt đẹp sau khi đổi tên progname của tôi. – j4x

5

Nếu bạn thêm AC_SUBST([CC]) vào configure.ac, điều đó sẽ đủ để xác định biến số theo như Tự động liên quan.

+0

Đây là một hack nhanh chóng tốt đẹp mà giải quyết vấn đề. –

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