2017-06-23 10 views
0

execute_processのヘッダーから文字列を抽出したかったのです。 しかし、コマンドにバグがあり、私は多くのことを試みます。常に同じエラーです。解析エラーです。機能がありません ")" CMAKE

execute_processCOMMAND猫$(version_h)| "myVersionを定義する" -a grepの|カット-d "" -f3 |カット-d '"' -f2`

OUTPUT_VARIABLE _Version)

コンソール行にコマンドを書き込むと、問題はありません。

エラーメッセージ:「Parse error。機能がありません ")"。代わりに、テキスト " "

+0

CMakeの変数は、次の方法で '$ {Variable}'にアクセスします。中括弧に注意してください。 – vre

+0

また、投稿にf2の後に追加のバックティックがあるようです。それはコピーエラーですか、それともコマンドの一部ですか? – vre

+0

catの前とf2の後に "' "を設定する必要がありますが、それはstackoverflowの書き込みコマンドです。例: 'command' – sovif

答えて

0

の問題は、私ということでした引用符文字を削除する必要があり、私はCmakeとbashコマンドと混同していると思います。

execute_process(COMMAND cat ... COMMAND grep ... COMMAND cut ... COMMAND cut -c2- COMMAND rev COMMAND cut -c2- COMMAND rev OUTPUT_VARIABLE _Version)

0

execute_process()を持つ未終了の文字列がプロセスとその引数のみを扱う、つまり関連するシェルはありません。第二版では

  1. execute_process(COMMAND bash -c "..." OUTPUT_VARIABLE _Version)
  2. execute_process(COMMAND cat ... COMMAND grep ... COMMAND cut ... COMMAND cut ... OUTPUT_VARIABLE _Version)

、標準出力と一緒にコマンドチェーンの標準入力:

だから、あなたは、主に2つのオプションがあります。

あなたがより複雑な何かをしたい場合、あなたは、指向の方法を別のスクリプトを作成し、PROCESS-でそれを呼び出す、シェル - いないする必要があります、つまりオプション1

関連する問題