2017-02-16 23 views
0

mustacheをcmakeのコード生成用のシンプルなテンプレートエンジンとして使用したいと思います。cmake execute_processでひげそりを実行する

私は以下のようにexecute_processでそれを実行しようとしました:

execute_process(COMMAND "/path/to/mustache" "<data> <template>") 

しかし、それはそのない有効なWin32アプリケーションと述べました。
#!D:/programs/Ruby23/bin/ruby.exe 
# 
# This file was generated by RubyGems. 
# 
# The application 'mustache' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0.a" 

if ARGV.first 

    ... 

は、だから私が試した:そして実際、口ひげはRubyスクリプトです

execute_process(COMMAMD "/path/to/ruby" "/path/to/mustache --help") 

しかし、それはどちらか動作しません...はcmakeの中でRubyスクリプトを実行する方法

No such file or directory -- D:/programs/Ruby23/bin/mustache --help (LoadError) execute_process?

+0

... UTF-8文字を台無しにルビーを防ぐ 'しかし、それはどちらか動作しません...' - それはルビーがあまりにもWIN32アプリケーションではないことを言いましたか?または何? – Tsyvarev

+0

このようなファイルやディレクトリはありません - D:/ programs/Ruby23/bin/mustache --help(LoadError) – jvtrudel

+0

ok。 argumetsはリストとして渡されなければなりません... '' 'execute_process(COMMAMD"/path/to/ruby​​ ""/path/to/mustache "" --help ")' '' 'ヒントのためにありがとう。 – jvtrudel

答えて

1

execute_process(COMMAND < CMD1> [args1 ...]] ...)

引数はリストとしてではなく、文字列として渡される必要があります。

# path to executables 
    set(RUBY_EXECUTABLE D:/programs/Ruby23/bin/ruby.exe CACHE STRING "ruby executable") 
    set(MUSTACHE_SCRIPT D:/programs/Ruby23/bin/mustache CACHE STRING "mustache ruby script") 

    # function that call mustache 
    function(apply_mustache data template result) 
     execute_process(
      COMMAND ${RUBY_EXECUTABLE} -E UTF-8 ${MUSTACHE_SCRIPT} ${data} ${template} 
      OUTPUT_VARIABLE result_t 
      ) 
     set(${result} ${result_t} PARENT_SCOPE) 
    endfunction() 

ボーナス-E UTF-8

関連する問題