Преобразование пути Cygwin в путь Windows в make-файле

Как я могу преобразовать путь в стиле Cygwin ( /cygdrive/c/foo/bar ) в стиль Windows ( C:/foo/bar ) (да, с / в дальнейшем) в make-файле GNU? У меня возникла ситуация использования Cygwin make с GCC, который не понимает пути в стиле Cygwin, поэтому пути, относящиеся к местоположению make-файлов, созданные make, не принимаются компилятором.


person grrussel    schedule 09.12.2010    source источник
comment
+1 Хороший вопрос. Я не мог ответить на него и просто смонтировал / в `` и должен был сделать свое приложение только с диска c:.   -  person khachik    schedule 09.12.2010
comment
А как сделать наоборот, преобразовать путь Win в Cygwin?   -  person Danijel    schedule 30.08.2013


Ответы (1)


Используйте функцию shell для выполнения утилиты cygpath с флагом -w.

Пример:

BAR := /cygdrive/c/foo/bar
WIN_BAR := $(shell cygpath -w ${BAR})

cygpath принимает множество дополнительных опций. Подробности смотрите на справочной странице.

person Dan Moulding    schedule 09.12.2010
comment
-m для смешанного режима, похоже, также дает мне желаемую / косую черту в пути. - person grrussel; 09.12.2010
comment
Да, -w, похоже, не работает, так как make интерпретирует обратную косую черту как экранирование следующего символа. - person cic; 02.06.2015
comment
По какой-то причине каждый раз, когда вы указываете относительный путь к каталогу вверх, cygpath -w преобразует его в абсолютный путь. - person CMCDragonkai; 07.02.2017