【发布时间】:2017-10-02 17:14:06
【问题描述】:
我从教授那里收到了这个示例 makefile,我正在尝试在 Ubuntu 上运行它,但我输入的命令不会运行它。 makefile 中的所有文件都已经存在,当我键入 make 时,它会生成文件,但实际程序不会运行。我尝试输入 ./a.out ,但它也没有运行。请帮我输入什么命令才能运行程序。
# Makefile for Library Management System
CXXFLAGS += --std=c++11
all: div main
rebuild: div clean main
debug: CXXFLAGS += -g
debug: rebuild
main: main.o controller.o view.o library.o publication.o
$(CXX) $(CXXFLAGS) -o lms main.o controller.o view.o library.o publication.o
main.o: main.cpp *.h
$(CXX) $(CXXFLAGS) -c main.cpp
controller.o: controller.cpp *.h
$(CXX) $(CXXFLAGS) -c controller.cpp
test_view: test_view.o controller.o view.o library.o publication.o
$(CXX) $(CXXFLAGS) -o test_view test_view.o controller.o view.o library.o publication.o
test_view.o: test_view.cpp view.h publication.h library.h
$(CXX) $(CXXFLAGS) -c test_view.cpp
test_library: test_library.o library.o publication.o
$(CXX) $(CXXFLAGS) -o test_library test_library.cpp library.o publication.o
test_library.o: test_library.cpp *.h
$(CXX) $(CXXFLAGS) -c test_library.cpp
library.o: library.cpp *.h
$(CXX) $(CXXFLAGS) -c library.cpp
test_publication: test_publication.o publication.o
$(CXX) $(CXXFLAGS) -o test_publication test_publication.o publication.o
test_publication.o: test_publication.cpp *.h
$(CXX) $(CXXFLAGS) -c test_publication.cpp
publication.o: publication.cpp *.h
$(CXX) $(CXXFLAGS) -c publication.cpp
clean:
-rm -f *.o lms test_age test_genre test_media test_publication test_library test_view test_view_actual.txt
div:
@echo
@echo 'X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-'
@echo '-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X'
@echo 'X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-'
@echo '-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X'
@echo
【问题讨论】:
-
只是一个疯狂的猜测:规则名称后面的命令应该用制表符缩进,但在你的 sn-p 我看到 4 个空格。
-
TAB 字符在
Makefile-s 中很重要