我有一个 C++ 项目的 makefile,它编译并创建程序的可执行文件,然后运行该可执行文件。问题是,我希望每次使用 make 命令时都运行可执行文件,但如果源代码没有需要重新编译的更改,make 将返回“make:nothing to done”。有没有办法格式化 makefile,以便在需要编译时编译和运行,否则只运行可执行文件?
最佳答案
您可以简单地添加一个新目标来运行程序,并使该目标依赖于程序的创建。如果您使该目标成为默认目标 (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”没有什么特别之处。我可以称它为“wibble”。
关于c++ - 有没有办法为每次使用 make 命令时运行程序的 c++ 生成文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57978429/