2015-04-12 2 views
0

My CMakeLists.txt правильно строит my_target.Почему в этом сценарии CMake не работает bash/echo?

Я попытался добавить эту фиктивную команду как пробный шаг после сборки:

ADD_CUSTOM_COMMAND (
     TARGET my_target POST_BUILD 
     COMMAND "echo I made `ls ${MY_DIR} | wc -l` things") 

Когда я бегу make my_target он терпит неудачу (после строительства) с

/bin/sh: 1: echo I made `ls /foo/bar | wc -l` things: not found 

Если я скопировать и вставить часть от «эхо» до «вещей» в скорлупе, который он отлично работает

I made 3 things 

«/ bin/sh: 1 Префикс предполагает, что оболочка запускается с «echo ...» в качестве ее команды, и я попытался изменить «эхо» на «bash echo», так почему же это не работает?

ответ

0
/bin/sh: 1: echo I made `ls /foo/bar | wc -l` things: not found 

сообщение об ошибке означает, что что-то пытается выполнить команду с именем, в буквальном смысле, с пробелами и клещей, echo I made `ls /foo/bar | wc -l` things.

Так что, похоже, cmake передает всю строку цитаты в качестве исполняемого файла. Удаление внешних кавычек должно исправить это.

Смежные вопросы