На самом деле использование прямой косой черты - лучшее и правильное решение. Утилиты Windows всегда поддерживают прямую косую черту, так что это работает, и попытка не забыть всегда указывать имена путей во избежание проблем с обратной косой чертой является большой проблемой.
В этом случае первое, что следует отметить, это то, что проблема не в make
. make
передает правильный контент в оболочку; это shell , который анализирует обратную косую черту как escape-символ.
Как я уже сказал выше, правильный ответ - использовать прямые косые черты, НО, если вы хотите, чтобы люди могли использовать обратную косую черту, вам придется просмотреть ваш make-файл и процитировать все аргументы, где может появиться обратный слеш. Например:
copyData : buildData
cp Release/*.tbl '$(DATA)'/index
исправит вашу непосредственную проблему.
Если у вас есть только пара из этих переменных, вы также можете сделать что-то вроде:
QDATA = '$(DATA)'
затем не забудьте использовать $(QDATA)
там, где вы хотели получить указанное в кавычках значение:
copyData : buildData
cp Release/*.tbl $(QDATA)/index
PS. Используйте косые черты! : -)