我在main.cpp
上使用此makefile运行make,它什么都不做。
CXX = g++
CXXFLAGS = -g -std=c++11 -stdlib=libc++ -Wall
SRCDIR = .
TARGET = tfm
SRCS = $(SRCDIR)/main.cpp
OBJS = $(SRCS:.cpp=.o)
all: $(TARGET)
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^
clean:
$(RM) $(TARGET) $(OBJS)
并且,编译完成了两次。
g++ -g -std=c++11 -stdlib=libc++ -Wall -c -o main.o main.cpp
g++ -g -std=c++11 -stdlib=libc++ -Wall -o tfm main.o
为什么会这样?
答案 0 :(得分:2)
并且,编译完成了两次。
不,不是。第一行显示main.cpp
到main.o
的汇编(由内置make
规则触发,如何将*.cpp
转换为*.o
)。
第二个显示链接步骤,将main.o
与库链接以生成可执行文件tfm
。
换句话说,一切都是美丽的。
答案 1 :(得分:0)
在源代码上运行make没有多大意义。你必须告诉make你想要生成什么。并且您不想生成源。
没有两次进行压缩。第一行编译第二行链接。