Qt中的项目类型(二)


Qt项目的构建(编译)、运行与调试(三)


编译、生成、调试和运行有什么区别?

编译:把你能看懂,但机器看不懂的源代码,翻译成你看不懂但机器能看懂的二进制文件。编译过程对于C/C++来说,一般有预处理,编译生成中间文件,链接这三个大过程,具体的这里就不多说了,有很多介绍的。

生成:按照你说的,VS中解决方案指的是完成一个目标的解决方案,字面意思。很多时候你完成一个开发目标,除了你自己写代码的部分,还可能会用到很多资源文件(图片,音视频以及其他东西),包括引用的第三方库,这些东西的处理有的就是打包进来,有的要在链接过程中,一起并入到你的程序等等,所以生成解决方案就是综合你完成这个目标所用到的所有资源,根据你配置的参数(各个项目属性,引用目录,解决方案属性等等),生成帮助你完成目标的工具(可以运行的程序等),当然你下载的开源库一般就是生成静态库(.lib)或者动态库(.dll),因为他们的目标就是给你提供工具。

调试:一般指的你写的代码,在Debug模式下编译以后,编译器在你的代码里插入了调试信息,你可以一步一步运行程序,查看中间结果,适用于你程序运行不对,需要检查中间过程确定问题源头的时候。真正程序发布时需要在Release模式下编译,去掉调试信息,否则Debug模式为了你调试方便,有很多辅助内容,也不会进行优化,程序效率比较低

运行:一是指的运行你生成的程序。二是编译源代码的时候,可能需要如CMake等工具辅助多文件编译,那么就需要编写CMakeList然后运行CMake工具来完成多文件编译。

 

回到你的问题,一般开源项目,都会提供给你源代码,如果是只有头文件的库,你只需要引用相应头文件即可。其他的库则需要以静态库或者动态库的形式来使用,一般项目会提供给你编译好的库文件,但有的人希望自己编译或者进行一些改造后使用,那么就需要自行修改后编译整个库,至于为啥这里叫编译,听着高大上嘛,严格来说这个操作不仅仅是编译,而是生成解决方案,这个解决方案也不一定是VS里那个,只是这么叫而已。