CMake报价问题

时间:2011-04-17 01:20:08

标签: build sed makefile cmake quotes

我正在尝试从CMake运行sed。问题是CMake真的搞砸了传递给sed的表达式。以下是CMakeLists.txt文件的摘录:

${SED_TOOL} -e "'1 s@.*@\#include \"config.hpp\"\\nnamespace LANG_NAMESPACE {\\nnamespace lexyacc {\\n\\n&@'" -e "'\$ s@.*@&\\n}}\\n@'"

这就是CMake将其转化为:

/bin/sed -e '1\ s@.*@#include\ "config.hpp"\nnamespace\ LANG_NAMESPACE\ {\nnamespace\ lexyacc\ {\n\n&@' -e '$\ s@.*@&\n}}\n@'

我该如何解决这个问题?关于CMake的引用如何运作有什么好的参考?

编辑:这是一个例子:

http://pastebin.com/G9NRfrp7

http://pastebin.com/y9776Lt9

1 个答案:

答案 0 :(得分:1)

为什么你认为你需要最外围的dbl-quote字符。 Cmake几乎可以肯定地将sed cmd传递给shell,然后shell执行它。将sed字符串放在dbl-quotes中意味着将执行一些额外的评估。消除dbl-quotes,除非您需要评估变量,然后使用类似

的内容
sed -e 's/xxx/yyy/;s/'"${var1}/${var2}"'/;s/www/zzz/'

我希望这会有所帮助。