makefile运行它编译的代码

时间:2017-02-17 15:20:53

标签: c++ makefile

如果我有一个将运行的代码,请将其命名为main.cpp,可执行文件为r.exe,然后我编写一个包含以下目标的makefile:

compile: 
    g++ -std=c++11 main.cpp -o r

可执行文件r.exe采用两个参数i.txto.txt。如何向makefile添加第二个目标,以便我可以运行以下命令,并看到程序执行:

make run i.txt o.txt

我尝试在makefile中添加第二个目标:

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

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

1 个答案:

答案 0 :(得分:5)

您无法将参数传递给make。命令make run i.txt o.txt将尝试构建规则runi.txto.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