论文部分内容阅读
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类项目的编译构建过程,提高源码的可理解性。