Tôi đang cố gắng thiết lập một tệp make-up nmake để xuất tệp balsamiq mockup của chúng tôi thành tệp png một cách tự động, nhưng tôi e rằng mình không thể tạo đầu hay đuôi của quy tắc chung để làm như vậy, không liệt kê rõ ràng tất cả các tệp tôi muốn xuất.Sử dụng nmake với các ký tự đại diện trong makefile
This page chi tiết cú pháp dòng lệnh để xuất tệp và this page chứa ví dụ giống như quy tắc chung cho tệp .obj thành tệp .exe.
Các makefile Tôi đã cố gắng cho đến nay trông như thế này:
.bmml.png:
"C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< [email protected]
Nhưng điều này không làm việc.
Nếu tôi chỉ cần chạy nmake (với một số file png lỗi thời), nmake chỉ thực hiện điều này:
[C:\Temp] :nmake
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
[C:\Temp] :
Nếu tôi hỏi nó để xây dựng một tập tin cụ thể, nó thực hiện điều này:
[C:\Temp] :nmake "TestFile.png"
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make '"TestFile.png"'
Stop.
[C:\Temp] :
Bất kỳ một bậc thầy nào ra khỏi đó có thể đặt tôi thẳng không?
Một ví dụ makefile mà chỉ đơn giản làm cho các file .dat từ file .txt bằng cách sao chép chúng, để thử nghiệm với, trông như thế này:
.txt.dat:
copy $< [email protected]
này không có gì là tốt, như vậy rõ ràng tôi không hiểu như thế nào quy tắc chung chung như vậy hoạt động. Tôi có cần phải xác định mục tiêu ở trên bằng cách nào đó liệt kê các tệp tôi muốn không?
Sửa: Đáp lại câu trả lời mới:
makefile này:
{}.txt{}.dat:
copy $** [email protected]
với tập tin này (test.dat)
1
2
3
và lệnh này:
NMAKE test.txt
Tạo thông báo lỗi này:
[C:\] :nmake test.txt
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make 'test.txt'
Stop.
Điều này rất tốt. Điều duy nhất là tôi đang tìm thấy nó xây dựng lại mọi lúc ngay cả khi mục tiêu được cập nhật. Làm thế nào một trong những sẽ làm cho nó bỏ qua nếu mục tiêu là mới hơn so với nguồn? – CashCow
@CashCow Tôi không thấy vấn đề đó. Trong ví dụ của Eric, mục tiêu không bao giờ tồn tại! Nó chỉ lặp lại một số văn bản, nó không bao giờ thực sự tạo ra một mục tiêu. Nếu bạn thêm một quy tắc 'copy $ <$ @', thì nó cũng sẽ tạo ra các mục tiêu. Trong trường hợp đó, nó không cần thiết phải xây dựng lại các mục tiêu ngày tháng. –
Tôi mất một lúc để tìm ra điều này. Nếu makefile của bạn không được đặt tên là 'makefile', thì bạn cần sử dụng' -f' trong lời gọi đệ quy. –