Cygwin make не может найти команды cygwin - PullRequest
1 голос
/ 21 июля 2010

При попытке установить сервер сборки я столкнулся с забавной проблемой, когда все команды cygwin могут запускаться из окна DOS, но иногда не работают при вызове из make. Что еще более странно, так это то, что некоторые делают цели, такие как «очистить», работать, а другие, как «все», не делают.

Вот примерная копия make-файла. Цитирование скрыло форматирование, но вкладки находятся там, где они должны быть, поверьте мне:

 .PHONY: all 
 all: update_autoconstants
    /usr/bin/rm -f $(OBJ_DIR)/myfile1.txt   
    rm -f  $(OBJ_DIR)/myfile2.txt   

 .PHONY: clean 
 clean:     
    rm -f $(OBJ_DIR)/*.*

Обратите внимание, что в 'all' один вызов rm имеет полный путь, а другой - нет. Также обратите внимание, что rm-вызов clean не имеет пути.

На это ответ на 'make -C makefile all':

/usr/bin/rm -f ../../obj/myfile1.txt 
rm -f ../../obj/myfile2.txt 
make: rm: Command not found 
make: *** [all] Error 127

т. полный путь работает, нет пути нет. То, что затем начинает вращать мою голову, это «чистая» цель в make без каких-либо путей. это не просто команды cygwin, make также не может найти компилятор. Кажется довольно ясным, что где-то путь был найден, хотя переменная окружения PATH установлена, но только в make - это прекрасно работает из командной строки DOS.

C:\>cygpath --unix c:\programme\cygwin\bin\rm  
/usr/bin/rm

Машина работает под управлением немецкого языка Windows Server 2003 в виртуальной машине на VMWare ESX, установка cygwin была сделана вчера, установлена ​​в c: \ program \ cygwin \, а все остальное - чистая ванильная установка Windows.

Есть идеи? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

На самом деле это не столько решение, сколько обходной путь - мы заставили все make-файлы использовать абсолютные пути к нужным exe-файлам, что в любом случае немного лучше, чем поиск пути и получение того, что вы нашли.

Чтобы сохранить кого-то, лучше всего вызвать некоторые команды Google в каталоге bin cygwin:

CYGWIN_EXE_PATH = /usr/bin
RM        = $(CYGWIN_EXE_PATH)/rm.exe
.PHONY: clean
clean:
    $(RM) -f $(OBJ_DIR)/*.*

Аналогично, файлы в каталоге программных файлов выглядят так:

COMPILER_DIR = "$(PROGRAMFILES)/TASKING/c563 v3.6r1"

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

0 голосов
/ 06 мая 2014

У меня была точно такая же вещь.

rm не был найден make из make-файла.

Мой обходной путь - запустить make-файл изнутри bash.Ранее я просто запускал make из windows cmd box.Это вылечило проблему для меня, но создало новые проблемы.Права доступа к некоторым файлам, которые были созданы во время создания, имели очень странные права доступа.

...