使用Code::Blocks编译VC程序(一)
为什么舍近取远?既然已有VC,为何还要使用Code::Blocks?最近微软的收网行动是一个契机,长久以来,开始慢慢觉得使用盗版让人不舒服.于是,慢慢的,rar,zip换成了好用的开源软件7zip(大推荐),word换成了open office,adobe reader换成了foxit(大推荐), ie也换成了Chrome,尽管ie是免费的,对了,什么时候换linux? 我不知道......
说了许多废话,正题进入.
盗版VS用了好多年,我再次感谢比尔盖兹.VS的好处多多,除了爹娘的照顾,和丰富的插件,可靠的编译(麻辣隔壁,同样的程序我用minGW-gcc就是崩溃,水土不服啊),梦幻般的智能提示.都是他的杀手锏,可是越来越慢的启动速度,常常的假死,和超级的个头,然我说不.
于是Code::Blocks登场,下面1000字的介绍Code::Blocks的优点的话,请google.我只说一句:Code::Blocks免费开源,启动速度快,块头小,功能多.缺点是,智能化做的不够.配置复杂(其实是优点),完.
如何用Code::Blocks来编译VC程序?
1.安装Windows SDK,你如果是native C++开发,只需要下载Platform SDK,大约600mb.如果你希望.net,即俗称的CLR,托管代码编程,则需要大约1000mb. 所有的安装程序请去:msdn-->developer center
2.安装Code::Blocks.
3.配置Code::Blocks.屁话少说,上图:
这个菜单是Settings--Compiler and Debugger
我安装了VS9(有点耍赖:),读者可以只安装SDK,里面有编译器,他的位置一般在诸如:"C:/Program Files/Microsoft SDKs/Windows/v6.0A/bin",可能有些许不同,但大致差不多.
见下图,设置编译器(rc.exe,link.exe,rc.exe)所在的文件夹
然后设置头文件的系统文件夹,比如windows.h这类头文件的位置,请看下图:
狗日的yupoo,给我加了一条水印,不过我还是要谢谢他的图床,狗日的,谢谢.(其实狗是很忠诚的动物,大家不要吃狗肉,谢谢.广告时间结束)
我们看到上图就是详细的设置,不用我多说了.如果你只安装了sdk,那么你的路径只有第一行.你不用担心只安装SDK会少东西,一点不少.VS把sdk的一部分文件装到了自己兜里,才造成这种情况.
我们知道除了头文件,还有链接obj文件是需要的系统库文件,比如需要我们的程序中调用::MessageBoxW这个函数,我记得是user32.dll中的,于是我们就需要链接user32.lib.说道这里你已经知道了,我们还需要设置常用链接库.见下图:
你看到我还设置了什么ole32.lib,gdi32.lib纯属个人喜好,你不需要用到那些库中的函数就不要链接这些库.接下来,还要设置这些库文件所在路径,见下图:)
和头文件路径设置很相似,如果你只安装了sdk,那么你的路径只有第一行.你不用担心只安装SDK会少东西,一点不少.VS把sdk的一部分文件装到了自己兜里,才造成这种情况.
请注意上图Compiler, Linker, Resource compiler这3个Tab标签,我们已经设置了前两个,最后一个是设置在rc.exe编译你的资源文件(resource.rc)时,所使用的头文件的位置,基本上rc文件的头一行就是:#include "resource.h" 而resource.h的头一行是:#include <windows.h>
所以一般设置的路径和设置系统头文件的路径是一致的,比如:"C:/Program Files/Microsoft SDKs/Windows/v6.0A/include".说句题外话,著名按钮ID比如IDOK,IDCANCEL都是在以windows.h为首的头文件中被定义的.
贴了那么多,我们基本上告一段落.
你已经可以创建一个Windows GUI程序,然后成功编译了.
具体的说就是:File-->New-->Project
然后选择:Win32 GUI Project,
下面就是和VS类似了,我就不罗嗦了.
说到这里,一定有人疑惑,有的工程需要gdi32.lib,有的工程需要gdi32plus.lib,难道每次我都要这么麻烦的修改吗?当然不需要,前面说的都是总体的设置.比如大部分win32程序都需要gdi32,kernel32这两个库,你可以吧这两个库加入默认链接选项,以后每一个工程都会自动连接这两个库.但是如何仅仅配置某一个特定工程?这里不就不贴图了. 左侧的Management栏,选择Project的Tab,然后右键YourProjectName,菜单选择Properties,然后在弹出的窗口中点击Project's build option,接下来的东西,你会很熟悉,只是记住它只对你的当前Project起作用.
最后说一句,这是(一),你注意到了吗,所以还有(二).为什么?因为我从来就是用makefile编译的,程序员的本性就是:control everything.
敬请期待(二)...........
你要用MFC?我恨mfc,虽然俺也是从mfc起步的,可是我觉得如果从win32开始,我会明白的更多.mfc瞬间让我在高楼,可是为了爬得更高,我不得不先爬到底楼,再重新爬起来.MFC只适用于一种专业人士,他所做的只是核心算法,可能跨平台,所以他根本不需要在乎什么windows!