执行子我有一个外部的项目,需要几个命令来构建:在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