Учитывая следующий питон скрипт:Как бороться со специальными символами в расширении команды make?
print("include_path_with\\[weird\\]characters")
и следующие Makefile
main:
g++ main.cpp -I`python script.py`
Предполагая main.cpp
фактически включает в себя файл из include_with\\[weird\\]characters
, это не поможет мне, с компилятором неисправного найти включаемый файл.
Однако, если я использую shell
function, он работает. Он также работает, если путь не содержит странных символов. Поэтому по какой-то причине побег, похоже, ведет себя по-разному между backticks и функцией shell
. Может кто-нибудь объяснить, почему и как я могу изменить сценарий так, чтобы он также работал с расширением команды backtick, если это возможно?
Я использую GNU Make 3,81 на Mac OS X 10.10.2 внутри оболочки bash
. Сценарий запускается с использованием Python 3.4.2.
Это представитель путь для этой проблемы? Потому что единственный случай, когда вы можете получить другой вывод в командной строке, который я могу сказать, - это использование '$ (shell) и не цитирование расширения переменной (так что обратная коса лишится оболочкой). Это тот случай, который работает? –
Когда я использую '$ (shell python script.py)' в файле makefile выше, при прочих равных условиях он работает. Я не понимаю, о чем вы говорите * не цитируйте расширение переменной *. –
Я имею в виду 'OUT: = $ (shell python script.py)', а затем 'g ++ main.cpp -I $ (OUT)' в отличие от 'g ++ main.cpp -I '$ (OUT)' и да, это один случай (из всех возможных котировок/и т. д., которые отличаются и которые позволяют оболочке удалять '\\' escape-файлы. –