2012-08-09 33 views
9

Ví dụ, tôi có một biến chứa một danh sách các phụ thuộcLàm thế nào để bạn thay đổi phần mở rộng tập tin biến makefile?

BOARDS:=lance.mcm light.mcm sac.mcm 

Tôi cần một biến có tên NET mà

NET:=lance.net light.net sac.net 

Nó nên được thiết lập như vậy mà khi tôi thay đổi biến BAN, NET cũng nên thay đổi. Ví dụ, nếu tôi thêm một zor.mcm mới vào biến BOARDS, nó sẽ tự động thêm zor.net vào biến NET.

+0

Superset: multiple ext ensions: http://stackoverflow.com/questions/12069457/how-to-change-the-extension-of-each-file-in-a-list-with-multiple-extensions-in-g –

Trả lời

22

Giải pháp tốt nhất mà tôi đã tìm thấy là sử dụng cú pháp sau:

NET:=$(BOARDS:.mcm=.net) 

này sẽ xem xét BAN và thay đổi .mcm vào .net

+0

Một chút giải thích thêm tại [Làm thế nào để thay đổi phần mở rộng của mỗi tập tin trong một danh sách với nhiều phần mở rộng trong GNU?] (http://stackoverflow.com/a/12071918/1730674) – askewchan

9

Là một thay thế:

BOARDS:=lance.mcm light.mcm sac.mcm 
NET:= $(addsuffix .net, $(basename $(BOARDS))) 

Điều này sẽ bảo toàn nội dung bên trong tên đường dẫn tệp nếu chúng khớp với mẫu

+0

Đây là lý do tại sao tôi đăng câu hỏi ngay từ đầu. Điều này là hoàn hảo, cảm ơn! – wonton

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