2011-07-06 1 views
-6

Кто-нибудь знает, что не так с моим Makefile?Ошибка переменной замены

CXX = g++    # compiler 
CXXFLAGS = -g -Wall -MMD  # compiler flags 
MAKEFILE_NAME = ${firstword ${MAKEFILE_LIST}} # makefile name 

OBJECTS1 = utf.o   # object files forming executable 
EXEC1 = utf    # executable name 

OBJECTS2 = driver.o rational.o # object files forming executable 
EXEC2 = rational   # executable name 

OBJECTS3 = da.o qa.o pa.o ua.o # object files forming executable 
EXEC3 = ho   # executable name 

OBJECTS = ${OBJECTS1} ${OBJECTS2} ${OBJECTS3} 
EXECS = ${EXEC1} ${EXEC2} ${EXEC3} 
DEPENDS = ${OBJECTS:.o=.d}  # substitute ".o" with ".d" 

.PHONY : all clean 

all : ${EXECS} 

${EXEC1} : ${OBJECTS1}   # link step 
    ${CXX} $^ -o [email protected] 

${EXEC2} : ${OBJECTS2}   # link step 
    ${CXX} $^ -o [email protected] 

${EXEC3} : ${OBJECTS3}   # link step 
    ${CXX} $^ -o [email protected] 

${OBJECTS} : ${MAKEFILE_NAME}  # OPTIONAL : changes to this file => recompile 

-include ${DEPENDS}   # include *.d files containing program dependences 

clean :     # remove files that can be regenerated 
    rm -f ${DEPENDS} ${OBJECTS} ${EXECS} 

Ошибка:

./Makefile: 1: CXX: not found 
./Makefile: 2: CXXFLAGS: not found 
./Makefile: 3: Bad substitution 
+0

Какую командную строку вы используете для вызова своего Makefile? – jopasserat

+0

@jHackTheRipper Я нахожусь в linux ubuntu 9.something using/xhbin/tcsh – Mark

+3

Сообщения об ошибках создают впечатление, что вы пытаетесь выполнить make-файл, а не вызываете 'make'. –

ответ

7

использовать команду make для запуска сборки. вы можете указать цель для make, например make all.

2

Не выполняйте makefile самостоятельно. Ваша оболочка пытается рассматривать ее как сценарий оболочки.

Пробег make, который использует файл makefile.

+0

Почему я не могу использовать Makefile самостоятельно? Для меня это похоже на код bash. – Mark

+3

@Mark: Значит, вы признаете, что вы ни разу не пытались понять или исследовать концепцию make-файлов, но бросить ее у нас обезьянами-кодами, ожидающими выполнения вашей работы? –

+1

@Mark: Ну, это не так. Это makefile. –

Смежные вопросы