2012-12-04 64 views
-1

有什么方法可以在php文件中执行makefile?我曾尝试:如何在php文件中执行makefile

exec('cmd /c "C:\\Program Files\\Microsoft Visual Studio\\VC98\\Bin\\nmake.exe" -f E:\\dev\\temp.mak > process.out 2> process.err < /dev/null &');

但我DONOT觉得这种方式得到的makefile运行。

+3

你将一些linux命令行混合到那个windows的一个中。或者反之亦然 – 2012-12-04 19:01:36

+0

我给:cmma的“nmake -f Makefile”来构建我的东西。 – user1558064

+0

对不起,请你纠正我的混音?是吗 & ? – user1558064

回答

1

尝试不同的方法来做到这一点,创建一个Windows批处理文件在您的PHP目录相同的地方;

cd C:\"Program Files"\"Microsoft Visual Studio"\VC98\Bin 
nmake.exe -f E:\dev\temp.mak > process.out 2> process.err 

*结合Zids评论这个:*

你将如何在命令行中执行它,如果你没有使用PHP? - rid

如果上述方法不起作用。通过在Windows命令提示符下运行,在线搜索该exe文件的用法,然后相应地更改.batch文件。 *

保存此作为.batch文件,然后从你的PHP尝试运行

exec ("filename.bat", $output); 

然后

查看由exec命令在一个简单的foreach循环

foreach ($output AS $OutputStr) 
{ 
echo $OutputStr."<br>"; 
} 
进行输出

应该有一些输出,从输出我会与之合作。

1

为什么不这样做:

$make = escapeshellarg("C:\Program Files\Microsoft Visual Studio\VC98\Bin\nmake.exe"); 
$path = escapeshellarg("E:\dev\temp.mak"); 
exec("start /B {$make} -f {$path} > process.out 2> process.err"); 
  • start /B将在后台执行程序

  • > process.out将标准输出重定向到 “process.out” 文件

  • 2> process.err将重定向错误输出到“process.err”文件

在此示例中,每次运行make时,将删除process.outprocess.err。为了避免这种行为,只需用>>代替>符号,并且会附加文件。

+0

谢谢,你能不能让我知道我可以给makefile的路径? – user1558064

+0

是,已编辑。让我知道如果需要 –

+0

非常感谢!我还可以问:当我使用start/B时,它似乎永远运行,但是当我使用cmd/c时,我立即得到了输出。再次感谢您帮助初学者。另外,你是否也知道如何在Web上输出输出而不是输出文件? – user1558064