Добрый день. Использую Rake для компиляции в gcc, ибо местный make со своими makefil'ами очень не нравится. Пример задачи в рейкфайле:
| Код | task :create_obj do puts "Create object file #{source}.o" sh "avr-gcc -g -Os -Wall -mmcu=#{mmcu} -std=#{std} #{source}.c -o build/#{source}.o" end
task :build => :create_obj do puts "Get load file for FLASH #{source}.hex from #{source}.o" sh "avr-objcopy -R .eeprom -O ihex build/#{source}.o build/#{source}.hex" end
|
Т.е. ещё хочется выводить сообщения о том, что же в данный момент времени происходит. Но вот беда - все сообщения, которые я вывожу через puts выводятся в самом конце, когда всё сделано. Иными словами сначала я получу сообщения компилятора, который вызываю в задачах, и только потом свои надписи. Можно как-то это исправить? Что я пробовал:
| Код | sh 'My text' sh 'echo my text'
|
В первом случае рейк ругается, во втором выводится как сама команда echo, так и выводимый ей текст, т.е.:
ps: маленький бонус вопрос - а можно ли вызывать задачу из другой? Я не имею в виду зависимости. Сейчас я делаю так: sh "rake build", т.е. рекурсивно запускаю рейк с нужным таргетом. Но может можно как-то проще? |