孤独750 发表于 2016-12-27 10:15:54

为Nginx的Configure添加配置参数--with-lcov

需求:
若为Nginx添加lcov的相关功能,需要在configure的时候配置参数:
 --with-cc-opt="-fprofile-arcs-ftest-coverage" --with-ld-opt=-lgcov
但是,叔度提出,每次configure都要写这些参数,太麻烦,能不能直接写一个--with-lcov就解决问题呢?
因此,后面的解决方案就是为Nginx的Configure添加配置参数--with-lcov,实现于2011年12月。
 
解决方案:
首先分析nginx源码的configure文件,从里面去查看configure的时候,是由哪里代码负责处理配置参数的。
最后发现,配置参数的读取及设置,是在nginx源码的auto文件夹内的option文件内处理的。
下面的代码贴出与--with-cc-opt,--with-ld-opt相关的处理代码:
//设置lcov相关变量参数
NGX_CC_OPT=
NGX_LD_OPT=
//根据配置参数,设置NGX_CC_OPT与NGX_LD_OPT的值
--with-cc-opt=*)                NGX_CC_OPT="$value"       ;;
--with-ld-opt=*)                NGX_LD_OPT="$value"       ;;
//help方法内对--with-cc-opt和--with-ld-opt参数的说明
--with-cc-opt=OPTIONS              set additional options for Ccompiler
--with-ld-opt=OPTIONS              set additional options for linker
 
看过源码内对--wiht-cc-opt与--with-ld-opt的设置之后,可以很轻易的想到,增加一个--with-lcov参数之后,
只要将--with-cc-opt和--with-ld-opt设置成固定值就ok了。
因此,解决方案如下:
//设置--with-lcov的变量参数
NGX_LCOV=NO
//根据配置参数,设置NGX_LCOV的值
--with-lcov)                     NGX_LCOV=YES               ;;
//编写help方法内对--with-lcov参数的说明
--with-lcov                        enable lcov, the validvalues:
--with-cc-opt=\"-fprofile-arcs-ftest-coverage\"
--with-ld-opt=-lgcov
// 根据NGX_LCOV的值,对NGX_CC_OPT和NGX_LD_OPT进行设置
if [$NGX_LCOV = YES ]; then
NGX_CC_OPT="-fprofile-arcs -ftest-coverage"
NGX_LD_OPT=-lgcov
fi
 
 
最后,所有工作就此完成。在configure的时候,只需要配置参数为--with-lcov,就能完成lcov的配置工作。
页: [1]
查看完整版本: 为Nginx的Configure添加配置参数--with-lcov