2017-02-17 95 views
2

代码如果我将运行一个代码,调用它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 

我曾尝试添加第二个目标生成文件:

run: 
    r.exe $1 $2 
例如

,但是要声明:“'r'是最新的”和“没有为'i.txt'完成,等等。”

我也尝试了一段时间的搜索,但'make','run'和'variables'或'arguments'本质上是一个不相关内容的搜索防火墙。

+0

我感兴趣的是看看是否有办法做到这一点与单独作出,但对我来说,使用bash脚本更有意义。 – synchronizer

+0

我建议你也尝试使用像CMake这样的跨平台和更强大的功能。至于这个问题,只需让你的IDE在编译后运行它(Visual Studio有这样的选项)。 – tambre

+0

@synchronizer是的我仍然是新来的C++。这种情况的要求是,必须逐字运行以下命令:'make compile',然后'make run i.txt o.txt'(我可以在其中放置一个bash文件吗?) – bordeo

回答

5

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

尽你所能代替的就是使用一个变量:

run: 
    r.exe ${ARGS} 

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

侧面说明,规则应该让他们说他们做的文件。所以你真的会希望你的编译规则看起来像:

r.exe : main.cpp 
    g++ -std=c++11 $^ -o [email protected] 

compile : r.exe 
.PHONY : compile