为什么编译后没有.o?

时间:2019-03-30 17:33:46

标签: c++ makefile compilation

每次更改代码后,由于未保存.o文件,因此必须编译整个程序,makefile怎么了?

CXX=g++
CXXFLAGS=-W -Wall -ansi -pedantic
LDFLAGS=
EXEC=test

SRC= $(wildcard *.cpp)
OBJ= $(SRC:.c=.o)

all: $(EXEC)
    @echo "$(CYAN)\n\tProgram successfully compiled!\n\a$(BLACK)"

$(EXEC): $(OBJ)
    $(CXX) -o $@ $^ $(LDFLAGS)

%.o: %.cpp
    $(CXX) -o $@ -c $< $(CXXFLAGS)

1 个答案:

答案 0 :(得分:0)

感谢约翰弄清楚!

问题是这一行:

OBJ = $(SRC:.c = .o)

必须是这样的:

OBJ = $(SRC:.cpp = .o)

实际上,我从makefile复制了结构以编译C程序,因此我必须修改源文件的扩展名!