要编译一个C++
项目,我想写一个perl
脚本来编译我的程序,看看编译是否出错。如果编译器给出任何编译错误,我将需要执行其他任务。
perl
脚本将是这样的:
@l1 = `find . -name '*.c'`;
@l2 = `find . -name '*.cpp'`;
@l3 = `find . -name '*.cc'`;
my $err;
my $FLAGS = "-DNDEBUG"
push(@l , @l1, @l2, @l3);
chomp(@l);
foreach (@l) {
print "processing file $_ ...";
$err = `g++ $_ $FLAGS`;
if($err == something) {
#do the needful
}
}
那么应该是什么呢?
您应该在g++...
之后检查$?
。
perlvar
$?
最后一个管道close, backtick(' ')命令返回的状态,成功调用wait()或waitpid(),或从system()操作符调用。
子进程的退出值实际上是
($?>> 8)
所以你应该检查g++
返回的是0
(success)还是non-zero
。
if ($? >> 8) {
/* Error? */
}
IPC::System::Simple/IPC::Run3使这更容易