4

ExternalProject_Add() の BUILD_COMMAND を介して引用符で囲まれた文字列を渡そうとしていますが、試行するたびに壊れてしまいます。コードは次のとおりです。

set (mylibs "-lmylib -lmylib2")
ExternalProject_Add(Foo
    URL             http://foo
    BUILD_COMMAND   make SOME_LIB=${mylibs}
    BUILD_IN_SOURCE 1
    ...)

バックスラッシュ引用符、二重引用符を使用して全体をインライン化しようとしましたが、毎回 SOME_LIB=... 部分全体が引用されるか、挿入された引用符がエスケープされます。コマンドラインに引用符を付けることはできないので、パラメーターをカバーするだけですか?

結果の make 呼び出しを のようにすることはできませんが、同じことを行うように見えるmake SOMELIB="-lmylib -lmylib2"呼び出しを行うことができますmake "SOMELIB=-lmylib -lmylib2"

4

1 に答える 1

0

このように引用してみましたか?

ExternalProject_Add(
  ...
  BUILD_COMMAND make "SOME_LIB=\"${mylibs}\""
  ...
)

二重引用符の外側のペアは「これはすべて 1 つの引数です」と言い、エスケープされた二重引用符の内側のペアは「これらは引数に埋め込まれています」と示します。

ただし、追加のエスケープが必要になる場合があります。私はこれを試したことがなく、うまくいくかどうか確信が持てません。しかし、それが機能するまでエスケープ文字を追加する方法があるはずです...または、最悪の場合、必要に応じてmakeを呼び出すための適切なシェル構文を持つスクリプトファイル(bash .shまたはbatch .bat)を書き出すことができます次に、BUILD_COMMAND としてスクリプト ファイルの実行を呼び出します。

于 2012-12-13T20:46:39.310 に答える