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