对VC++工程编译过程的梳理
VC++的项目和解决方案文件解读,无非就是利用这些信息进行一个软件的编译,这些文件里面是存放的项目的配置和工程的组织,类似于makefile文件. 但是只有VC++6.0的时候可以导出makefile文件,VC6的project>Export MakeFile,往后的版本都取消了。 所以只能从各个文件中去获取相关信息,最后才编译。
编译器MSBuild (VCBuild) 调用配置文件:
文章参阅MSDN上的MSBuild (Visual C++)
.vcxproj:工程配置文件
.props:使用项目属性表可以为生成工具(如编译器或链接器)指定开关并创建用户定义的宏。
.vcxproj.user:用户文件,存储特定于用户的属性,例如调试和部署设置。vcxproj.user 文件应用于特定用户的所有项目。
.vcxproj.filters:当使用解决方案资源管理器向项目中添加文件时,筛选器文件 (.vcxproj.filters) 会基于该文件的文件扩展名定义在解决方案资源管理器树视图的哪个位置添加该文件。
获取配置
当编译程序时,会把上面几个文件中所有信息输入到编译器中,结合目前编译器的全局参数include files lib files source files等等,从配置文件中确定标准库和头文件的位置,使所有参与编译的依赖关系都找清楚。
编译预处理阶段
读取源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理;
将所有的“#define”指令删除,并且将宏定义展开;
处理所有的条件编译指令;
处理#