執行子我有一個外部的項目,需要幾個命令來構建:在cmake的
ExternalProject_Add(
xmlrpc_build
PREFIX ${XMLRPC_ROOT}
SOURCE_DIR ${XMLRPC_ROOT}
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ""
BUILD_COMMAND ./configure --enable-curl-client CURL_CONFIG=${CURL_CONFIG} COMMAND export CFLAGS=`${CURL_CONFIG} --cflags` COMMAND make -j8
INSTALL_COMMAND ""
)
不幸的是,cmake的逃逸',因此命令是非法的構造:
export "CFLAGS=\`/xxx/curl-config" "--cflags\`"
我累了把它放在 「」,但沒有運氣:
BUILD_COMMAND ./configure --enable-curl-client CURL_CONFIG=${CURL_CONFIG} COMMAND "export CFLAGS=`${CURL_CONFIG} --cflags`" COMMAND make -j8
export "CFLAGS=\`/xxx/curl-config" "--cflags\`"
組合使用$(),而不是``不幫之一:
BUILD_COMMAND ./configure --enable-curl-client CURL_CONFIG=${CURL_CONFIG} COMMAND "export CFLAGS=$(${CURL_CONFIG} --cflags)" COMMAND make -j8
"export CFLAGS=\$(/xxx/curl-config --cflags)"
BUILD_COMMAND ./configure --enable-curl-client CURL_CONFIG=${CURL_CONFIG} COMMAND export CFLAGS=$(${CURL_CONFIG} --cflags) COMMAND make -j8
export "CFLAGS=\$" "(" /xxx/curl-config --cflags ")"
有沒有辦法從子進程獲取結果並將其分配給變量?
編輯:從另一個問題,仍然沒有運氣嘗試的解決方案:
set(blah "`${CURL_CONFIG} --cflags`")
BUILD_COMMAND ./configure --enable-curl-client CURL_CONFIG=${CURL_CONFIG} COMMAND export CFLAGS=${blah} COMMAND make -j8
export "CFLAGS=\`/xxx/curl-config --cflags\`"
或:
BUILD_COMMAND ./configure --enable-curl-client CURL_CONFIG=${CURL_CONFIG} COMMAND [=[export CFLAGS=`${CURL_CONFIG} --cflags`]=] COMMAND make -j8
"export CFLAGS=\`\${CURL_CONFIG} --cflags\`"
的可能的複製[cmake的:如何以包括自定義命令字面雙引號?](http://stackoverflow.com/questions/39368525/cmake-how-to-include-literal-double-quote-in-custom-command)或者[CMake quote escape conumdrum](https://stackoverflow.com /問題/ 40626275/cmake的引號轉義-conumdrum)。你也可以使用'$ {CMAKE_COMMAND} -E env [--unset = NAME] ... [NAME = VALUE] ... COMMAND [ARG] ...'爲你的'make'調用設置環境。 – Florian