我正在尝试从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的引用如何运作有什么好的参考?
编辑:这是一个例子:
答案 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/'
我希望这会有所帮助。