我有一个C++项目的makefile,它编译并为程序创建一个可执行文件,然后运行该可执行文件。问题是,我希望每次使用make命令时都要运行可执行文件,但是如果对需要重新编译的源代码没有任何更改,make将返回“make: nothing to no”。是否有一种方法来格式化makefile,以便在需要编译时编译并运行,否则只运行可执行文件?
发布于 2019-09-17 17:08:40
您可以简单地添加一个新目标来运行程序,并使该目标依赖于程序的创建。如果使该目标成为默认目标(all:)的依赖项,则它将始终在成功构建后运行该程序。
如下所示:
SOURCES = ./src/main.cpp
OBJECTS = ./bin/main.o
# default target to build hello executable & run it if successful
all: hello run
hello: $(OBJECTS)
$(CXX) -o $@ $^
bin/%.o : src/%.cpp
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< $(LDFLAGS)
run: hello
./hello
clean:
@rm -rf hello $(OBJECTS)
.PHONY: all run clean
注意:目标名"run“没有什么特别之处。我本可以叫它“拼字游戏”。
https://stackoverflow.com/questions/57978429
复制相似问题