2011-11-08 22 views
8

Khi tôi sử dụng gnu cổ điển Hãy để tôi đặt các hành động xây dựng bài đăng như flash thiết bị (nếu đó là thiết bị được nhúng) và các tác vụ tương tự khác. Các nhấp nháy thực tế thường được ẩn đằng sau một sctipt nhỏ hoặc một số lệnh.cmake: Cách thêm add_custom_command chỉ thực thi shellscript?

Sau đó, tôi có thể gõ một cái gì đó giống như

make flash 

vì vậy tôi đầu tiên xây dựng mã và sau đó nó kết thúc lên trên mục tiêu. Các Makefile cổ điển có thể có một cái gì đó giống như trong nó:

.PHONY: flash 
flash: main.bin 
    scripts/do_flash.pl main.bin 

Nhưng làm thế nào để tôi thêm loại bài xây dựng hành động để một cmake xây dựng?

Làm cách nào để thêm "lệnh tùy chỉnh" chỉ thực thi shellscript?

này câu hỏi nói về add_custom_command: Câu hỏi cmake add custom command cảm thấy như nó gần, nhưng add_custom_command dường như cần một "tập tin đầu ra" để làm việc. Nhưng trong trường hợp này có điều gì đó xảy ra, không được tạo ra.

Tôi sẽ đặt gì trong CMakeLists.txt để thêm hành động tùy chỉnh như vậy?

/Cảm ơn


Để tham khảo, một liên kết vào tài liệu cmake về chủ đề này

Trả lời

11

Hãy thử điều này:

add_custom_target(flash 
    COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/do_flash.pl ${MAIN_BIN_FILE} 
    DEPENDS ${MAIN_BIN_FILE} 
) 
+0

+1 Đó trông rất đẹp :) – Johan

+1

btw, làm thế nào để bạn biết rằng $ {MAIN_BIN_FILE} nên chuyển thành main.bin? Có một số loại ma thuật cmake, hoặc tôi sẽ xác định một varialbe gọi là MAIN_BIN_FILE và cho anh ta giá trị main.bin? – Johan

+1

Yup, bạn nên tự xác định. Tôi giả định rằng bạn sẽ sản xuất main.bin bởi add_custom_command (OUTPUT $ {MAIN_BIN_FILE} ...). Nếu nó không phải là trường hợp bạn có thể thay thế nó bằng chuỗi không đổi. Trong trường hợp đó, bạn cũng có thể loại bỏ mệnh đề DEPENDS khỏi add_custom_target. – arrowd

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