Как запустить Rake-задачи из Rake-задач?

Вы должны структурировать свой код между .h (заголовками) и .cpp-файлами (реализация).

Вы должны включить файлы заголовков: .h Никогда не включать файлы .cpp. (Если вы не знаете, что делаете, и это было бы в очень редких случаях).

В противном случае вы заканчиваете компиляцию несколько раз своего класса, и вы получаете сообщение об ошибке, которое ваш компилятор говорит вам: «переопределение класс ...

399
задан Andrew Marshall 21 June 2012 в 02:40
поделиться

4 ответа

task :build_all do
  [ :debug, :release ].each do |t|
    $build_type = t
    Rake::Task["build"].execute
  end
end
11
ответ дан pjb3 21 June 2012 в 02:40
поделиться

например:

Rake::Task["db:migrate"].invoke
120
ответ дан Sergio Tulentsev 21 June 2012 в 02:40
поделиться
  • 1
    Если you' ре, собирающееся отправить ответ, предлагающий библиотеку, было бы хорошо, если Вы на самом деле объясните, как использовать его вместо того, чтобы просто упомянуть его имя. – Pops 7 December 2011 в 09:46
task :build_all do
  [ :debug, :release ].each do |t|
    $build_type = t
    Rake::Task["build"].reenable
    Rake::Task["build"].invoke
  end
end

Это должно разобраться, просто нужно то же самое самому.

56
ответ дан 22 November 2019 в 23:38
поделиться

Если вам нужно, чтобы задача работала как метод, как насчет использования реального метода?

task :build => [:some_other_tasks] do
  build
end

task :build_all do
  [:debug, :release].each { |t| build t }
end

def build(type = :debug)
  # ...
end

Если вы предпочитаете придерживаться идиом rake , здесь ваши возможности, составленные из прошлых ответов:

  • Это всегда выполняет задачу, но не выполняет ее зависимости:

     Rake :: Task ["build"]. execute
    
  • Этот выполняет зависимости, но он выполняет задачу, только если он еще не был вызван:

     Rake :: Task ["build"]. invoke
    
  • Это сначала сбрасывает состояние уже_invoked задачи, позволяя задаче затем снова выполнить, зависимости и все:

     Rake :: Task ["build"]. reenable
    Rake :: Task ["build"]. Invoke
    

    (Обратите внимание, что уже вызванные зависимости не выполняются повторно)

625
ответ дан 22 November 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: