编译、生成、调试和运行有什么区别?
编译:把你能看懂,但机器看不懂的源代码,翻译成你看不懂但机器能看懂的二进制文件。编译过程对于C/C++来说,一般有预处理,编译生成中间文件,链接这三个大过程,具体的这里就不多说了,有很多介绍的。
生成:按照你说的,VS中解决方案指的是完成一个目标的解决方案,字面意思。很多时候你完成一个开发目标,除了你自己写代码的部分,还可能会用到很多资源文件(图片,音视频以及其他东西),包括引用的第三方库,这些东西的处理有的就是打包进来,有的要在链接过程中,一起并入到你的程序等等,所以生成解决方案就是综合你完成这个目标所用到的所有资源,根据你配置的参数(各个项目属性,引用目录,解决方案属性等等),生成帮助你完成目标的工具(可以运行的程序等),当然你下载的开源库一般就是生成静态库(.lib)或者动态库(.dll),因为他们的目标就是给你提供工具。
调试:一般指的你写的代码,在Debug模式下编译以后,编译器在你的代码里插入了调试信息,你可以一步一步运行程序,查看中间结果,适用于你程序运行不对,需要检查中间过程确定问题源头的时候。真正程序发布时需要在Release模式下编译,去掉调试信息,否则Debug模式为了你调试方便,有很多辅助内容,也不会进行优化,程序效率比较低。
运行:一是指的运行你生成的程序。而是编译源代码的时候,可能需要如CMake等工具辅助多文件编译,那么就需要编写CMakeList然后运行CMake工具来完成多文件编译。