Raymond Chen 2024年05月30日
一图描述构建 C++ 可执行文件的步骤,并针对经典 Win32 进行了改进
上一次,我们创建了一个图表,展示了构建C++可执行文件的基本步骤。虽然这个图表同样适用于Windows程序,但往往在C++构建过程中,有些部分是其他工具的输出结果。此外,还有一些Windows程序特有的部分,它们并不包含在C++构建流程中,因为它们生成的不仅仅是C++程序。
让我们将这些常见于传统Win32应用程序的部分加入到我们的图表中。
原始图表位于左下角,它处理C++源文件(.h, .cpp),并最终生成一个模块(.dll 或 .exe)。新增的步骤包括从其他源生成C++源文件,或者为最终模块添加额外内容。
如果你有一个.idl文件,它将由MIDL编译器处理,生成.h和.c文件,这些文件将被你的项目代码所使用。
你的项目中可能还包含其他代码生成器。例如,如果你有一个yacc语法文件或一个Lottie动画,你也会有一个编译器生成器或动画生成器,作为代码生成步骤,将原始材料转化为代码和资源,供其他部分使用。
一旦我们生成了所有C++源文件,我们就可以按照上一次的流程进行:编译C++源文件为对象文件,并可能生成一个.lib库文件。
同时,对于传统的Win32资源,资源编译器会处理.rc文件及其支持文件(如.ico和.bmp),生成.res资源文件。
在所有.obj、.lib和.res文件生成后,我们将它们全部提供给链接器,链接器将它们合并生成最终的模块,即.dll或.exe文件。
整个过程的本质并没有改变。只是在编译之前(生成头文件和代码)、编译过程中(生成资源文件)以及编译之后(将资源集成到最终的二进制文件中),有更多的步骤需要处理。
下次,我们将通过添加打包和XAML的相关内容,进一步丰富这个中心图表。