Tôi muốn viết một makefile (gmake) cho trình biên dịch - không giống như gcc - đặt tất cả các tệp đầu ra vào một thư mục cụ thể. Rất tiếc, không thể thay đổi hành vi này.Makefile, Pattern-Rules và Thư mục
Nguồn của tôi nằm trong nhiều thư mục. Làm cách nào để viết một quy tắc mẫu cho phép tôi biên dịch các nguồn.
OK, có một chút không rõ ràng. Đây là một ví dụ. nguồn của tôi trông có thể giống như này:
./folder1/foo.c
./folder2/bar.c
và các tập tin đầu ra sẽ kết thúc như thế này:
./obj/foo.obj
./obj/bar.obj
Làm thế nào nên quy tắc của tôi để biên dịch nguồn của tôi trông như thế nào?
%.obj : %.c
$(COMPILER) -c $<
sẽ không hoạt động.
Bất kỳ ý tưởng nào? Tôi muốn tránh một quy tắc ngầm cho mỗi file nguồn ...
Bạn có thể sử dụng 'VPATH' cho rằng = hoặc = bạn có thể tạo' thư mục1/Makefile' và 'obj/Makefile' sẽ' include ../ Makefile.inc', chứa các quy tắc chung (ví dụ: bạn đã cho). –