将包含标头传递给g ++

时间:2016-10-28 08:52:51

标签: perl g++

我从g++文件上的Perl脚本调用hello world.cpp,该文件包含来自path\include\ddk的标头。我将参数列表作为参数给出{{1}分隔的包含路径}。问题是它需要整体而且我得到的信息:
;ignoring nonexistent directory "D:\gnu\gcc-4.8.1\include\GL;D:\gnu\gcc-4.8.1\include\ddk"分开包括相同。

系统调用类似于:
, g++ -v -c -fno-show-column #S\\\$> -o #B\\\$%\.o #opt

-I$i_incl实际上是: $i_incl

我做错了什么?

这是代码的简化版本示例:

D:\gnu\gcc-4.8.1\include\GL;D:\gnu\gcc-4.8.1\include\ddk

use strict; use warnings; use File::Spec::Functions qw(catfile); my $compilerRoot = "D:\\gnu\\gcc-4.8.1"; my $i_incl =catfile($compilerRoot,"\\include\\GL;").catfile($compilerRoot,"\\include\\ddk"); $ENV{'PATH'} = "d:\\gnu\\gcc-4.8.1\\bin;". $ENV{'PATH'}; my $command = "g++ -v -c C:\\Users\\asdf\\Documents\\hello.cpp -fno-show-column -o hello -I$i_incl"; system($command); 有:

hello.cpp

1 个答案:

答案 0 :(得分:0)

我无法复制环境,做得太多,请你试试这个吗?

my @i_incl = split /;/, =catfile($compilerRoot,"\\include\\GL;").catfile($compilerRoot,"\\include\\ddk");

$ENV{'PATH'} = "d:\\gnu\\gcc-4.8.1\\bin;". $ENV{'PATH'};
foreach $i_incl(@i_incl) {
my $command = "g++ -v -c C:\\Users\\asdf\\Documents\\hello.cpp -fno-show-column -o hello -I$i_incl";
system($command);
}