Мне нужно иметь makefile
работу под Windows и Cygwin. У меня возникли проблемы с make-файлом, который правильно определяет ОС и устанавливает соответствующие переменные.
Цель состоит в том, чтобы установить переменные для следующих команд, а затем вызвать команды в правилах, используя переменные:
- Удалить файл:
rm
в Cygwin, del
в Windows.
- Удалить каталог:
rmdir
(другой
параметры в Cygwin и Windows)
- Копировать файл:
cp
в Cygwin, copy
в
Окна.
- Тестирование на наличие файлов:
test
в Cygwin, IF EXIST
в Windows.
- Вывод содержимого файла:
cat
in
Cygwin, type
в Windows.
Вот моя попытка, в которой всегда используется предложение else
:
OS_KIND = $(OSTYPE) #OSTYPE is an environment variable set by Cygwin.
ifeq ($(OS_KIND), cygwin)
ENV_OS = Cygwin
RM = rm -f
RMDIR = rmdir -r
CP = cp
REN = mv
IF_EXIST = test -a
IF_NOT_EXIST = ! test -a
LIST_FILE = cat
else
ENV_OS = Win_Cmd
RM = del -f -Q
RMDIR = rmdir /S /Q
IF_EXIST = if exist
IF_NOT_EXIST = if not exist
LIST_FILE = type
endif
Я использую символ косой черты, '/', в качестве разделителя каталогов. Это проблема с командой Windows, так как она интерпретирует ее как аргумент программы, а не как разделитель. Кто-нибудь знает, как решить эту проблему?
Я использую make с Mingw как в консоли Windows, так и в Cygwin.