CMake проблема цитирования - PullRequest
1 голос
/ 17 апреля 2011

Я пытаюсь запустить sed из CMake.Проблема в том, что 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 Ответ

1 голос
/ 17 апреля 2011

Почему вы думаете, что вам нужны самые внешние окружающие символы dbl-quote.Cmake почти наверняка передает sed cmd в оболочку, которая затем выполняет его.Помещение строк sed в dbl-кавычки означает, что будет выполнена дополнительная оценка.Удалите dbl-кавычки, если только вам не нужна оценочная переменная, а затем используйте что-то вроде

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

Надеюсь, это поможет.

...