c++ - 有没有办法为每次使用 make 命令时运行程序的 c++ 生成文件?

标签 c++ makefile

我有一个 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/

相关文章:

c - makefile 相对路径是否与 gcc 相对路径相同?

linux - Caffe编译失败: make: *** [. build_release/src/caffe/data_transformer.o] 错误1

shell - 如果 Make 规则失败,删除目标文件的优雅方式

c++ - 为什么这个 Factorial 函数对大数返回零

makefile - 在 ocamlbuild 中使用外部库

c++ - C++ 中的循环依赖帮助

c++ - 我可以从 divide_typeof_helper 检索基本单位吗?

makefile - 添加对隐式规则的所有使用的依赖关系

c++ - 在 C++ 代码中应该使用哪个 C I/O 库?

c++ - 使用G++编译C++程序时出错