Вопрос

Mar 19, 2014 09:58

Друзья. У меня вопрос по программированию. Точнее по обработке makefile.

Среда - Win XP, компилятор - gcc для QNX.

Есть makefile. В нем такая строка:
CCBLD = @echo compile $(notdir $@);$(CC) $(CFLAGS) $(INCLUDE) $< -o $@



notdir $@ - тут подставляется имя файла без пути.
$(CC) - компилятор
$(CFLAGS) - подставляются флаги для компилятора
$(INCLUDE) - пути ко внешним хидерам

Ок. На одном компе запускаю, все работает. Т.е. как это происходит.
echo выводит надпись "compile main.o", например, а то, что после точки с запятой - не выводится, оно как раз выполняется.
$(CC) $(CFLAGS) $(INCLUDE) $< -o $@ - сюда подставляются пути, файлы, и это все компилируется.

Запускаю на другом компьютере.
На экран выводится:
compile main.o;C:/...../qcc.exe -V3.3.5,gcc_ntox86 -O3 ....... -DNDEBUG -I./INC -IC:/..../usr/include F:/Sources/.../main.cpp -o O:/..../main.o

Я часть путей точками забил, т.к. они в данном случае не информативны.

Ну, т.е. echo выводит все, что идет после него.

Получается, в одном случае echo выводит на экран все, что находится между ней и точкой с запятой, а после точки с запятой - просто выполняется команда.
Во втором случае echo выводит на экран все до конца строки.

Вопрос. Где надо покопаться в настройках ОС, чтобы все работало однотипно - до разделителя выводилось на экран, после - просто выполнялось?

Я, конечно, уже переписал makefile на втором компе, но хочется, чтобы они были одинаковы, чтобы при изменении можно было с компа на комп копировать.
Previous post Next post
Up