2024年6月14日发(作者:)
百度文库 - 让每个人平等地提升自我
. Code::Blocks配置——全局路径变量
本章咱们安装了许多扩展库,接下来,咱们将要在程序中写一些挪用这些库的代
码,然后由编译器编译代码、最后由链接器将库与程序以某种形式“链接”在一路。
编译器和链接器,都需要“明白”上哪儿找这些库。
"库"其实就是一些文件,它们被寄存在某个文件夹里。以SDL为例,咱们只要提
供如此一个绝对路径:“E:cpp_ex_libsSDLSDL-1.2.13lib”,那么链接器肯
定不会向咱们抱怨“找不到XXXX库”。
采用“绝对路径”来指定某个扩展库的位置,存在一些问题:
o
团队开发时,难以合作。原因是不同的开发者可能将同一个库安装在不同的
目录下。比如我把cpp_ex_libs安装在E盘,我写了一个例子项目放在网上
供大家下载,但下载完以后,用Code::Blocks打开,由于项目配置内容中,
尽是“E:cpp_ex_libs……”,若是您的“cpp_ex_libs”位于F盘,那您就
不能不一个个查找替换过去了!唉,如此事,咱们之前就遇过。
o
就算个人开发,采用绝对路径也不太方便。以wxWidgets为例,一开始我
用2.8.7的版本开发一个软件,后来wxWidgets官方升级了,我想试试新
版,又不也直接删除掉旧版,所以就把新版安装在另一个目录下,这时要实
现项目升级,若是当初写的“绝对路径” ,此刻恐怕不能不去一一修改那
些路径信息了。
Code::Blocks采用“全局变量”的概念来解决这一问题,即,用“${#wx}”如
此一个特定的字符串,来表示wxWidgets的安装路径。在我的机械上,我它配置为
代表“E:cpp_ex_libswxWidgetswxWidgets-2.8.9”如此一个位置,在您的机械,
则能够配置成“F:cppexlibwxwxWidgets-2.8.9”。咱们之间的约定,就是一样
以“wx”作为名字,用于代表wxWidgets扩展库在各自机械上实际安装位置。
1
百度文库 - 让每个人平等地提升自我
类似同一个扩展库不同版本的问题如何解决呢?Code::Blocks提供了“全局变
量集合”,允许提供多套全局变量。比如笔者在写本书的例子程序,所有扩展库都
采用当前最新版本,但在为公司开发时,用的是相对旧版的扩展库,这种情形下,
我就可以够概念两套变量集,上班时和在家时在两个集合间切换即可(假设我上班
和在家用的是同一台本本电脑)。
2.14.1. 新建全局变量集:d2school
为了教学上彼此方便,咱们将在Code::Blocks中创建一个名为d2school的变量
集,请按如下步骤操作。
步骤1:运行Code::Blocks;选择:主菜单“设置→全局变量”,出现对话框“全
局变量编辑器”,点击第一行的“新建”按钮,如下图:
图 25 新建全局变量集合
步骤2:完成第一步,将再次弹出一个对话框,输入“d2school”(不含引号),
确认退出。
图 26 指定新集合名字:d2school
2.14.2. 全局变量wx
2
百度文库 - 让每个人平等地提升自我
咱们拥有了一个新的全局变量集合,咱们接下为该集合创建第一个全局变量:wx。
步骤1:在“全局变量编辑”对话框中,点击第二行的“新建”按钮,将弹出一
个题目为“新变量”的对话框,这次输入“wx”(不含引号),确认退出。
图 27 新建全局变量wx
步骤2:然后,请在“全局变量编辑”对话框左侧的“base”栏内,填写wxWidgets
扩展库在您机械上的安装路径,对于本书是:
“E:cpp_ex_libswxWidgetswxWidgets-2.8.9”(不含引号,下同)
您能够通过编辑框右边的“...”按钮找到实际安装路径。
在“include”栏内,填写:
“E:cpp_ex_libswxWidgetswxWidgets-2.8.9include”
在“lib”栏内,填写:
“E:cpp_ex_libswxWidgetswxWidgets-2.8.9lib”
效果如图:
图 28 wx变量的base,include,lib填写内容
3
百度文库 - 让每个人平等地提升自我
步骤3:为了确保填写无误,请别离点击上图中的三个“...”按钮,进行检查。
2.14.3. 其它全局变量
•
boost
boost
E:cpp_ex_libsboostboost_1_36_0
E:cpp_ex_libsboostboost_1_36_0includeboost-1_36
E:cpp_ex_libsboostboost_1_36_0lib
名称
base
include
lib
•
iconv
iconv
E:cpp_ex_libsiconv
E:cpp_ex_libsiconvinclude
E:cpp_ex_libsiconvlib
名称
base
include
lib
•
iconvpp
iconvpp
E:cpp_ex_libsiconvpp
E:cpp_ex_libsiconvppinclude
E:cpp_ex_libsiconvpplib
名称
base
include
lib
•
mysql
mysql
E:cpp_ex_libsMySQL
E:cpp_ex_libsMySQLinclude
E:cpp_ex_libsMySQLlib
名称
base
include
lib
•
mysqlpp
名称
mysqlpp
base
E:cpp_ex_libsMySQL++3.0.6
include
E:cpp_ex_libsMySQL++3.0.6include
4
百度文库 - 让每个人平等地提升自我
lib
E:cpp_ex_libsMySQL++3.0.6lib
•
xerces
xerces
E:cpp_ex_libsxerces-cxerces-c-src_2_8_0
E:cpp_ex_libsxerces-cxerces-c-src_2_8_0include
E:cpp_ex_libsxerces-cxerces-c-src_2_8_0lib
名称
base
include
lib
•
deelx
deelx
E:cpp_ex_libsdeelx
E:cpp_ex_libsdeelxinclude
(空)
名称
base
include
lib
•
sdl
sdl
E:cpp_ex_libsSDLSDL-1.2.13
E:cpp_ex_libsSDLSDL-1.2.13includeSDL
名称
base
include
(注意,和其它include略有不同,此处以SDL子目录结束,而不是
在include目录结束)
E:cpp_ex_libsSDLSDL-1.2.13lib
(之前,我们曾经将复制到该目录下)
lib
5


发布评论