Я должен написать Makefile, который «делает все» для выполнения как testimage, так и testcene. Но также, если бы я хотел, я мог бы сделать, сделать testcene или сделать testimage для компиляции только testimage. Но почему я получаю ошибки, ниже, я был вокруг make-файлов, и это может означать, что он не работает.Почему мой Makefile дает мне проблемы?
EXENAME = testscene
OBJS = testscene.o scene.o image.o png.o rgbapixel.o
EXENAME = testimage
OBJS = testimage.o scene.o image.o png.o rgbapixel.o
CXX = clang++
CXXFLAGS = -std=c++1y -stdlib=libc++ -c -g -O0 -Wall -Wextra -pedantic
LD = clang++
LDFLAGS = -std=c++1y -stdlib=libc++ -lpng -lc++abi
all : testimage testscene
$(EXENAME) : $(OBJS)
$(LD) $(OBJS) $(LDFLAGS) -o $(EXENAME)
testscene: testscene.o scene.o image.o png.o rgbapixel.o
$(LD) testscene.o scene.o image.o png.o rgbapixel.o $(LDFLAGS) -o testscene
testimage: testimage.o scene.o image.o png.o rgbapixel.o
$(LD) testimage.o scene.o image.o png.o rgbapixel.o $(LDFLAGS) -o testimage
testscene.o : testscene.cpp scene.h image.h png.h rgbapixel.h
$(CXX) $(CXXFLAGS) testscene.cpp
scene.o: scene.h image.h png.h rgbapixel.h
$(CXX) $(CXXFLAGS) scene.cpp
testimage.o : testimage.cpp image.h png.h rgbapixel.h
$(CXX) $(CXXFLAGS) testimage.cpp
image.o : image.cpp image.h png.h rgbapixel.h
$(CXX) $(CXXFLAGS) image.cpp
png.o : png.cpp png.h rgbapixel.h
$(CXX) $(CXXFLAGS) png.cpp
rgbapixel.o : rgbapixel.cpp rgbapixel.h
$(CXX) $(CXXFLAGS) rgbapixel.cpp
clean :
-rm -f *.o $(EXENAME)
[email protected] mp2]$ vi Makefile
[email protected] mp2]$ make
Makefile:21: warning: overriding commands for target `testimage'
Makefile:15: warning: ignoring old commands for target `testimage'
make: Nothing to be done for `all'.
[email protected] mp2]$
благодаря
Я бы поднял верх, если вы удалите «Правда?» поскольку это определенно встречается как снисходительный. –
+1, и я думаю, что «правда?» является подходящим - вопрос показывает очень мало исследований. (Этот make-файл также сильно избыточен, но может ждать еще один день.) – Beta
Я удалил код ниже, исправляет ли он, $ (EXENAME): $ (OBJS) $ (LD) $ (OBJS) $ (LDFLAGS) -o $ (EXENAME) – user124627