如何检测编译器何时发出错误

时间:2011-07-23 10:22:14

标签: c++ perl g++

要编译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
     }
   }

那么什么应该

2 个答案:

答案 0 :(得分:6)

您应该在$?之后检查g++...

<强> perlvar

  

$?

     

最后一个管道关闭,反引号(``)命令返回的状态,   成功调用wait()或waitpid(),或者从system()操作符调用。

     

子流程的退出值实际为($?>> 8)

因此,您应该检查g++是否已返回0(成功)或non-zero

if ($? >> 8) {
    /* Error? */
}

答案 1 :(得分:1)

IPC :: System :: Simple / IPC :: Run3使这更容易