本文简单解释下在使用hphp命令编译php代码到cpp代码并生成二进制可执行文件中需要注意和使用的几个参数,先给出一个完整的编译命令:
[codesyntax lang="c"]

hphp --cluster-count=50 --program=projectname --input-list=/tmp/make/list.conf --output-dir=/tmp/make/projectname --gen-stats=1 --keep-tempdir=1 --log=3 --force=1

[/codesyntax]

1. --cluster-count
如果不配这个参数的话,有几个php文件就会生成几个cpp文件,导致编译过程变长。所以如果基数过大的话,可以启用这个参数。

2. --program:
编译生成的二进制可执行文件的名字。

3. --input-list
这个比较重要,当我们编译一个比较复杂的项目的时候,一般我们都会有很多代码文件,并且都不会只有一个入口 。
在编译过程中,有一个选项叫--parse-on-demand默认是打开的。这个选项的意思是,在php代码中,所有的include语句加入的代码,都会被加到编译对象文件列表里。
有了上一个参数这样一个前提条件,我们只需要在编译的时候给出php代码的入口和几个单独的可运行的php文件位置就行了。
这个参数需要我们给出的是一个列表文件,每行都是一个单独的文件地址。e.g
/tmp/make/list.conf
[codesyntax lang="c"]

/var/www/tryit.php
/var/hiphop/lib/HiphopTest.php

[/codesyntax]

4. --output-dir
这个目录指的是当编译完成之后,编译生成的代码和可执行文件要输出到哪里去。

5. --gen-stats
是否需要生成代码状态和代码错误报告。

6. --keep-tempdir
是否需要将编译过程中生成的文件都保留下来 。

7. --config
指明配置文件在哪里。

8. --log
指明编译的log等级 ,一般启用3,有用的信息都打出来。

9. --force
即便遇到warning和error都强制编译代码 ,错误和警报会在报告中体现出来。

10. --include-path
所有你需要在include包含语句中出现的代码文件目录。