C++ makefile来运行它编译的代码

C++ makefile来运行它编译的代码,c++,makefile,C++,Makefile,如果我有一个将要运行的代码,请调用它main.cpp,可执行文件是r.exe,然后我编写一个具有以下目标的makefile: compile: g++ -std=c++11 main.cpp -o r 可执行文件r.exe采用两个参数i.txt,o.txt。如何将第二个目标添加到makefile中,以便运行以下命令并查看程序的执行: make run i.txt o.txt 我已尝试向makefile添加第二个目标: run: r.exe $1 $2 例如,但是make

如果我有一个将要运行的代码,请调用它
main.cpp
,可执行文件是
r.exe
,然后我编写一个具有以下目标的makefile:

compile: 
    g++ -std=c++11 main.cpp -o r
可执行文件
r.exe
采用两个参数
i.txt
o.txt
。如何将第二个目标添加到makefile中,以便运行以下命令并查看程序的执行:

make run i.txt o.txt

我已尝试向makefile添加第二个目标:

run:
    r.exe $1 $2
例如,但是make声明:“'r'是最新的”和“对于'i.txt'没有什么要做的,……等等。”


我也尝试搜索了一段时间,但是“make”、“run”和“variables”或“arguments”本质上是一个搜索无关内容的防火墙

您不能像那样将参数传递给
make
。命令
make run i.txt o.txt
将尝试构建规则
run
i.txt
o.txt

您可以改为使用变量:

run:
    r.exe ${ARGS}

make run ARGS="i.txt o.txt"

请注意,规则应该使文件符合他们所说的。因此,您确实希望编译规则如下所示:

r.exe : main.cpp
    g++ -std=c++11 $^ -o $@

compile : r.exe
.PHONY  : compile

我很想知道是否有一种方法可以单独使用make来实现这一点,但对我来说,使用bash脚本更有意义。我建议您也尝试使用跨平台和更强大的工具,如CMake。至于问题,简单地让你的IDE在编译之后运行它(VisualStudio有这样的选项)。@同步器是的,我对C++仍然是新的。这种情况的要求是必须逐字运行以下命令:
makecompile
,然后
makeruni.txt o.txt
(我能在其中放一个bash文件吗?)@synchronizer,或者根据下面的答案,该要求可能是一个错误。。。