Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作一个makefile来测试一些输入? 所以我有这个C++程序,我有一些输入,我需要测试。 我需要做一个Mag文件来测试它们,但是我没有一点线索来做它,或者我需要在我的C++程序中写什么来获得MaX文件的输入。_C++_Makefile - Fatal编程技术网

如何制作一个makefile来测试一些输入? 所以我有这个C++程序,我有一些输入,我需要测试。 我需要做一个Mag文件来测试它们,但是我没有一点线索来做它,或者我需要在我的C++程序中写什么来获得MaX文件的输入。

如何制作一个makefile来测试一些输入? 所以我有这个C++程序,我有一些输入,我需要测试。 我需要做一个Mag文件来测试它们,但是我没有一点线索来做它,或者我需要在我的C++程序中写什么来获得MaX文件的输入。,c++,makefile,C++,Makefile,我知道makefiles的基本知识,比如build、valgrind和clear命令,但我不知道如何制作…… 我还需要用程序的输出创建一些.out文件 我知道这可能是一个愚蠢而简单的问题,但我找不到这两个问题的答案(如何使这个makefile工作,如何将makefile中的文件解析到我的C程序中)。 编辑: 这就是我的makefile现在的样子。现在,我怎样才能同时运行它们?我能做这个吗 Tarjan:g++Tarjan.cpp-Wall-o Tarjan run\u test1:./Tarja

我知道makefiles的基本知识,比如build、valgrind和clear命令,但我不知道如何制作……
我还需要用程序的输出创建一些.out文件

我知道这可能是一个愚蠢而简单的问题,但我找不到这两个问题的答案(如何使这个makefile工作,如何将makefile中的文件解析到我的C程序中)。 编辑: 这就是我的makefile现在的样子。现在,我怎样才能同时运行它们?我能做这个吗

Tarjan:g++Tarjan.cpp-Wall-o Tarjan

run\u test1:./Tarjan输入/输入\u test1.in输出/输出\u test1.out

run_test2:./Tarjan输入/输入测试2.in输出/输出测试2.out

run\u test3:./Tarjan输入/输入\u test3.in输出/输出\u test3.out

run_test4:./Tarjan输入/输入测试4.in输出/输出测试4.out

run_test5:./Tarjan输入/输入测试5.in输出/输出测试5.out

run_test6:./Tarjan输入/输入测试6.in输出/输出测试6.out

run_test7:./Tarjan输入/输入测试7.in输出/输出测试7.out

run_test8:./Tarjan输入/输入测试8.in输出/输出测试8.out

run\u test9:./Tarjan输入/输入\u test9.in输出/输出\u test9.out

run\u test10:./Tarjan输入/输入\u test10.in输出/输出\u test10.out


clean:rm Tarjan rm output/output*.out
尽可能简单,听起来您需要一个类似以下内容的
Makefile

my_app: <tab> my_app.cpp
  <tab> g++ -Wall -g -o my_app my_app.cpp
  <tab> ./my_app < my_test_input

make
运行可执行文件,这些文件在
makefile
中的规则中定义,因此您也可以使用makefile运行可执行版本以进行测试。可以从文件中提供输入,如果程序从标准输入读取,可以通过I/O重定向,如果程序接受文件名,也可以通过指定文件名作为参数。规则中的依赖项应该是可执行工件,或者包含testdata的文件。你不需要知道你程序中的
makefile
的任何信息。我花了一段时间才弄明白你想说什么,但我想你的意思是我可以在C/C++中使用argv[]。我发现这要容易得多,输入文件在argv[1]中,输出在argv[2]中。如果程序已经通过
std::cin
接收输入并将输出写入
std::cout
,通常“更容易”的方法是使用shell I/O重定向。如果您还没有编写程序,可以将其设计为使用命令行参数指定输入/输出文件。我已经使用argv[]编写了该程序,并且它可以与Makefile一起运行,但我不知道如何运行多个测试:(创建多个make目标,每个测试一个,请参见下面我的评论。我更愿意将测试内容放入单独的make规则中。
all
target可以将它们用作依赖项。@πάνταῥεῖ: 我也会为自己这样做,但我认为对于那些只需要开始的人来说,尽可能简单是最好的……正如我所看到的,这只运行一个测试。我需要运行多个测试,但我发现我可以在某个地方做一些测试:test1、test2、test3等等。然后是
/my_app
。这样可以吗?这种方法是是否对可执行文件执行不同的运行?因为如果我不运行此程序的多个实例,则需要覆盖某些结构。@Mihai93“…我需要运行多个测试…”为每个测试创建一个单独的make规则。这些规则中唯一更改的参数是输入/输出文件的名称。
/my_app
不会执行您想要的操作。规则
测试:test1、test2、test3
只会定义单个测试目标的依赖项
test1
等。我这样做了,但我可以运行我一下子就明白了?我更新了我原来的帖子
int an_int;
std::string a_space_separated_word;

if (std::cin >> an_int >> a_space_separated_word)
    // do something with the inputs...
else {
    std::cerr << "failed to read inputs\n";
    exit(EXIT_FAILURE);
}

std::string line;
while (getline(std::cin, line))
{
    ...get all the lines in the input into line, one by one...
}