Tôi có file đối tượng đến với con đường mà có thể trông như thế này:Makefile - loại bỏ ../ từ đường
'../../src/foo/bar.c'
Tôi muốn họ được đầu ra để
'build/src/foo/bar.o'
Hiện đang sử dụng :
COBJS := $(notdir $(CFILES))
COBJS := $(patsubst %,$(BUILD)%.o,$(COBJS))
tôi có thể đạt được
'build/bar.o'
Đây là vấn đề nếu có hai thư viện/dự án có cùng tên lớp.
Vì vậy, câu hỏi đặt ra là làm thế nào một người có thể xóa nhiều '../' khỏi đường dẫn trong Tạo. Tôi đã thử các cách tiếp cận rõ ràng và ngây thơ không có kết quả.
Cập nhật, thông tin sau sẽ khớp chính xác ../../ và thay thế bằng phần còn lại. Điều này hoàn hảo ngoại trừ việc nó cụ thể cho ../../. Chỉ cần để làm cho nó phù hợp với bất kỳ số lượng ../../
COBJS := $(CFILES:../../%=%)
Update,
SOLVED, chỉ cần ba danh tiếng nhút nhát của đăng câu trả lời của riêng tôi.
COBJS := $(subst ../,,$(CFILES))
Có gì sai với 'COBJS: = $ (subst ../.., xây dựng, $ (CFILES))'? – Beta
Một số tệp không phải lúc nào cũng có hai đường dẫn tương đối ngược. – Halsafar