Có cách nào để lấy khoảng trắng bên trong tên mục tiêu hoạt động khi sử dụng make.exe không? Nó có vẻ là bất khả thi nếu báo cáo lỗi thực sự cổ này là đúng: http://savannah.gnu.org/bugs/?712Cho phép không gian trong mục tiêu của GCC makefile
Để tham khảo, vấn đề lớn là mảnh makefile lệnh như:
"foo bar baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
... dường như được coi là ba lệnh riêng biệt: một để xây dựng "foo (lưu ý bao gồm"), một để xây dựng thanh, và cuối cùng, một để xây dựng baz "(một lần nữa, bao gồm cả"). Điều này là do make.exe dường như đang sử dụng không gian làm dấu phân tách.
Tuy nhiên, bạn nên giả định rằng người ta có thể muốn tạo "Hello World.exe" chẳng hạn. Điều này dường như không thể. Dấu ngoặc kép không hoạt động và không thoát khỏi các từ riêng biệt (tôi đã đọc ở đâu đó, không nhớ liên kết):
"foo\\ bar\\ baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
Còn cách nào khác để sửa lỗi này không? Hướng dẫn chính thức duy nhất khẳng định những thứ tokenize-by-không gian, nhưng không cung cấp một cách để sử dụng không gian cho bất kỳ mục đích nào khác: http://www.gnu.org/software/make/manual/make.html#Rule-Syntax
Edit: như đề nghị, tôi đã cố gắng dấu gạch chéo đơn quá, nhưng chúng có cùng hiệu ứng giống như hai dấu gạch chéo. Khiếu nại không thể tìm thấy các quy tắc cho từ đầu tiên:
mingw32-make.exe: *** No rule to make target `foo', needed by `all'. Stop.
Thực thi chính xác "foo bar baz.exe" được tạo đúng cách nhưng liên kết được thực hiện mỗi lần cho mỗi từ.
Điều đó dường như không hoạt động, hãy xem bản chỉnh sửa. – Orwell
@Orwell: Sau đó, nó có vẻ là một vấn đề của hệ điều hành. Làm thế nào để bạn chỉ định một tập tin với không gian trong tên tại vỏ của bạn? – Matthias