大型CMake类项目源码分析方法的研究与实现

来源 :北京交通大学 | 被引量 : 6次 | 上传用户:szjlq
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
CMake是主流编译工具之一,具有开源、自动化和跨平台等特性。CMake的主要配置文件为CMakeLists.txt,在该文件中可通过编写简单的语句对所有平台的编译过程进行描述。CMake类项目是指项目的每个目录下均含有CMakeLists.txt文件,即可用CMake命令对项目进行编译与管理。CMake区别于其他编译工具的一个重要特点也是重要优势就在于它的跨平台性,其跨平台性主要体现在只要有一套CMake的编译脚本,就可在各大主流平台上编译出各自可执行的工程脚本,开发者可以使用各大平台上的原生构建系统来管理项目。但是,目前关于CMake配置文件的设计文档和编译过程的描述文档比较匮乏,存在开发维护CMake类项目困难的问题。特别是随着软件系统规模的不断扩大和复杂性的不断增加,上述问题越来越明显。只有弄清楚CMake类项目的构建过程,才能更好地分析其配置文件及其整个项目的源码,进而利于CMake类项目的开发。因此,依据CMake配置文件的特性,本文论述的关于CMake类项目源码分析方法的研究,具有重要的现实意义与应用价值。本文首先简要阐述了 CMake类项目源码、CMakeLists.txt文件、CMake工具等相关的基础知识,接着对CMake为其配置文件CMakeLists.txt提供的内嵌函数的语法规则、文件的组织结构以及文件中各类语句的处理方法展开了详细描述。其中重点讨论了 CMakeLists.txt文件调用的内嵌函数和文件中各类语句的详细解析方案,以及采用递归处理方式实现对各目录层级中所有的CMakeLists.txt文件的分析。基于手工分析程序的结果,结合CMake类项目的特性即配置文件描述了项目的编译过程,提出了一种模拟CMake类项目源码编译构建过程的源码分析方法,构建了基于内嵌函数调用的CMake配置文件分析原型,设计并实现了模拟项目编译过程的完整程序。在此基础上,利用该原型对不同功能的大型CMake类项目源码进行分析测试实验,验证该方法的可用性和结果的正确率。其间,首先得到要分析的项目源码的路径;然后以顶层CMakeLists.txt文件为起点,展开整个项目的分析,得到整个项目的完整分析过程;最后,从分析过程中提取需要的信息。针对CMake类项目的源码分析方法原型测试结果表明,该方法可以准确地得到项目完整的分析过程,并从分析过程中可以便捷地获取到相关信息(例如函数之间的调用关系),与手工分析源码得到的相关信息相比,正确率较高,且因分析过程效率较高,故具有较强的可用性,更有助于理解CMake类项目的编译构建过程,提高源码的可理解性。
其他文献
<正>大力发展农产品加工贸易,对农业综合效益提高、农民收入的增长有着重要影响力[1]。新疆维吾尔自治区(下称新疆)农产品加工贸易产值占新疆省加工贸易总额百分比也在不断增
目的探讨沐舒坦联合维生素E辅助治疗胎粪吸入综合征(MAS)临床疗效。方法将114例MAS患儿随机分为治疗A组、治疗B组和对照组,3组均采用相同的综合基础治疗,所有患儿均在常规给
<正>随着乳腺癌发病率的提高,对乳腺癌相关的研究也越来越多,针对不同的人群,选择不同的方案,有部分老年患者因合并其他疾病而不能耐受手术,本实验选择明确癌诊断的,用液基细
目的观察硝苯地平缓释片对治疗高血压病的效果。方法 80例原发性高血压病患者口服硝苯地平控释片30mg,每24小时给药1次,8周为1个疗程。结果 80例高血压病患者经服硝苯地平缓
<正>先天性马蹄内翻足(CCF)是一种常见的儿童足部先天性畸形,其发病率约占0.1%~0.3%,男孩发病率约为女孩的2倍,单侧多于双侧,以前足内收、足内翻、跖屈和马蹄足为特征[1],其治
<正>人口老龄化就是指老龄人口在总人口中所占的比重逐渐增大从而导致人口结构改变的过程,随着科学技术的进步和医疗水平的提高,人类的平均寿命越来越长,老龄人口在总人口中
全球性金融危机暴露出现代虚拟经济的蓬勃发展与制造业逐步衰退下的经济“危机”格局,随之而来的是经济发展的滞缓、产业领域的失衡、失业率的走高等一系列经济、社会问题。从学术界来看,“产业空洞化”成为学界探讨的重要领域,“制造业崛起”、“再工业化”成为政界和学界共同研究的未来发展方向。本文从国际和国内“再工业化”、“重返制造业”的大背景出发,以“企业再地方化”为理论基础,以“浙商回归”工程为研究对象,建立
本文对以往归入修辞学研究范围的超常搭配现象从语法、语义、语用三个平面重新作了考察,试图从复义结构的角度阐释这类语言事实.