Tôi sử dụng cờ -MM
trong GCC để tạo phụ thuộc cho các đối tượng makefile cho các đối tượng. Hàm makefile trông giống như sau:Đường dẫn tạo phụ thuộc GCC makefile
-include autodep
...
$(TARGET): build $(OBJECTS)
$(CC) -shared -o [email protected] $(OBJECTS)
$(CC) -MM $(SOURCES) > autodep
Các nguồn được đặt trong thư mục src
. Tuy nhiên, các tập tin autodep
sẽ chứa các mục tiêu đối tượng mà không cần đường dẫn tương đối của họ:
foo.o: src/foo.c src/foo.h
bar.o: src/bar.c src/bar.h src/baz.h
Làm thế nào tôi nên biến chúng thành này:
src/foo.o: src/foo.c src/foo.h
src/bar.o: src/bar.c src/bar.h src/baz.h
?
Tôi đã thử sử dụng cờ -MT
, nhưng dường như loại bỏ hoàn toàn mục tiêu đối tượng.
Cảm ơn! Tôi sử dụng vòng lặp 'foreach' và nội dung của' autodep' là chính xác ngay bây giờ. Nhưng nó không thực sự có vẻ hiệu quả. Sử dụng ví dụ từ câu hỏi, nếu tôi thay đổi 'src/bar.h' và chạy' make' tôi chỉ nhận 'make: \' src/foo.o 'là cập nhật'. –
Giải quyết nó bằng cách đặt '-include' sau' all: '. –