通常,解析器在解析执行文件之前,需要知道每个源文件使用的包含文件的路径、所使用的宏定义,以及编译器缺省使用的包含文件搜索路径。如果在eclipse中打开了扫描配置特征, CDT(C Development Toolkit) 就需要调用“ gcc –E –P –v -dD ”命令,从命令的输出中分析得到这些信息。同时,CDT还需要检查运行“ make ”的输出结果,确定用户在makefile中指定了哪些包含文件路径及定义了哪些宏。
目前,在Eclipse中,缺省使用了gcc编译器。如果用户使用了非GNU编译器,则需要完全禁止自动搜索包含文件路径及宏定义的功能。方法如下:打开当前工程的属性配置界面,选择“ C/C++ Make project ”项目,选择“ Discovery Options ”标签页面,不选择“ Automate discovery of paths and symbols ”功能。但用户随后需要在“ C/C++ Include paths and symbols ”标签页面上,手工加上全部的包含文件及宏定义所在的路径,否则, Eclipse会产生一大堆解析错误。
gcc编译的这几个参数的含义如下:
-E 要求 gcc 在完成预处理后停止,不编译源文件。 gcc 产生的数据为预处理后的源代码,输出到控制台。不需要预处理的源代码文件则被 gcc 忽略。
-P 禁止 gcc 的预处理器在输出文件中加上行标记。
-v 要求 gcc 输出实际完成编译工作时所使用的命令,并打印 gcc 各模块的版本号。
-v 输出处理过程的详细信息。在 gcc 开始运行前,打印 GNU CPP 的版本号,并输出包含文件的路径。
|