Hin*_*ton 5 c++ gcc makefile g++
我在一个充满.cpp
和.h
文件的目录中有以下Makefile :
CFLAGS=-g -std=c++0x -Wall -pedantic -Wextra -D __STDC_LIMIT_MACROS -D __STDC_FORMAT_MACROS -O0
CXX=g++
LDFLAGS=-lgmp -lmathsat -lz3
all: Foo.o Bar.o
$(CXX) $(CFLAGS) -o myexe Foo.o Bar.o $(LDFLAGS)
depend: .depend
.depend: $(wildcard *.cpp)
rm -f ./.depend
$(CXX) $(CFLAGS) -MM $^ > ./.depend
include .depend
%.o: %.cpp
$(CXX) $(CFLAGS) $(INCLUDE) $< -c
clean:
rm -f *.o myexe
Run Code Online (Sandbox Code Playgroud)
当我点击时make
,它总是执行最后一步(链接),即使没有任何.o
文件发生变化.我怎么能阻止make
这样做呢?我期望make
输出Everything up-to-date
或类似的东西.
我在使用GNU Make 3.82和g ++版本4.8.2的i686 GNU/Linux机器上.
重新链接您的项目,因为它试图构建all
.规则all
不会创建任何名为的文件all
.相反,它产生myexe
.下次运行make时,它会看到没有all
,但是有一个规则来构建一个,所以它尽职尽责地执行myexe
每次运行make时都会链接的规则.
为了解决您的问题,您需要将makefile更改为大致如下所示:
all: myexe
echo Build done
myexe: <myexe dependencies go here>
$(CXX) $(CFLAGS) -o myexe $(wildcard *.o) $(LDFLAGS)
Run Code Online (Sandbox Code Playgroud)