使用 Visual Studio 的属性表快速引用第三方的库

本文介绍了如何使用Visual Studio的属性表简化项目配置,特别是管理第三方库的头文件和库目录。通过属性管理器,开发者可以方便地导入和管理属性表文件,避免在每个项目中重复配置。此外,文章还讲解了属性表文件的创建、使用和详细内容,包括AdditionalIncludeDirectories、AdditionalLibraryDirectories和AdditionalDependencies等关键配置,以及如何利用Condition进行条件设置。
摘要由CSDN通过智能技术生成

1 项目配置

1.1 传统配置方式

自从我开始使用 Visual C++ 系列开发工具开始,配置项目头文件目录,库文件目录几乎形成了肌肉记忆。由于 C/C++ 语言的特点,这些目录的位置如果设置不当,近在眼皮子底下的库就是用不上,简直可以逼死强迫症。图(1)就是大家熟悉的附加头文件目录和附加库文件目录的设置选项。这种配置方式的烦恼之处在于每次新建项目,都要把这些库的路径重复配置一遍,一旦不小心填错,就是一堆编译错误。在 Visual Studio 2008 之前的 VC 版本,可以选择把头文件路径和库的目录信息放在全局配置中,避免每次新建项目都重复做第三方库的配置。但是放在全局配置中会导致所有的 VC 项目都受影响,项目用不到的头文件目录不仅导致编译时搜索头文件效率降低下,还会因为头文件的重名产生莫名其妙的编译错误。除此之外,如果是多人协同工作的项目,则每个人从库中拉回来代码,第一件事情就是修改项目中引用的第三方库的目录,因为每个人的电脑上放置第三方库的位置都不一样。入库的时候也要小心翼翼地避免自己修改的目录信息被推送的库中,影响别人。

 图(1)旧的项目配置方式

1.2 属性管理器

虽然 Visual Studio 2008 取消了全局配置选项,但是引入了属性表文件帮助用户简化项目配置操作。Visual Studio 2008 的属性表文件是扩展名为 vsprops 的 XML 文件,其内容就是正常的项目配置内容。但是 Visual Studio 2008 的属性表文件在使用时有一个很大的问题,就是引入属性表文件的时候,实际上是把属性表文件中的配置合并到项目配置中,这会导致多个属性表文件合并时产生冲突。从 Visual Studio 2010 开始,属性表文件中的配置与项目配置相互独立,并增加了一个属性管理器(Property Manager)管理多个属性表配置。如果一个项目中导入了多个属性表文件,则相关的属性配置按照属性管理器中的顺序“串联”到项目配置中。

 图(2)属性管理器界面

图(2)是 Visual Studio 2019 的属性管理器界面,其他版本的界面基本类似。图中橙色方框就是属性管理器的标签页,如果你的界面上没有这个标签页,可以通过 “View” 菜单中的 “Property Manager” 菜单项打开这个界面。图中蓝色方框中是演示项目使用的属性表,每个条目代表一个导入的属性表文件:

boost_1_70_0_share_runtime.props jsoncpp-1.9.4_static.props libIconv-1.16_static.props
libtomcrypt_static.props libuchardet-0.0.7_static.props log4cplus-2.0.4_share.props
soui2_share.props

从中可以看到这个名为“屎堆超级文件工具”的程序使用了 7 个第三方的开源库,如果按照传统的配置方式,把这 7 个库的目录都配置好就是一个体力活,但是如果事先准备好了属性表文件,则只需要在属性管理器中导入这些属性表文件即可,非常简单。

2 属性表的创建和使用

2.1 使用属性表文件

我们将在下一节介绍如何创建属性表文件,这里主要介绍属性表文件的使用。使用属性表文件主要有两个场景,第一个场景是你需要在自己的项目中使用第三方的库,另一个场景是你拿到一个已经通过属性表文件引入第三方的库的项目,但是属性表文件中的库的位置与你本地的库的位置不一致,这种情况多发生在多人协作的项目或参与开源项目的时候。先说说第一种情况,此时只需要在属性管理器中导入属性表文件即可。首先打开或切换到属性管理器界面,然后在项目名称上点击鼠标右键,在弹出的菜单中选择 “Add Existing Property Sheet...” 菜单项,如图(3)所示:

 图(3)添加属性表

最后在弹出的窗口中选择准备好的属性表文件即可。我写代码离不开 boot 库,所以我选择引入 boost 库作为例子,导入事先准备好的 boost 库的属性表文件后,在属性管理器中就可以看到导入的属性表,并且可以选择右键 “Properties” 菜单查看属性表文件为此项目引入的配置,如图(4)所示:

 图(4)查看属性表文件的配置内容

此时就可以在项目代码中直接使用 boost 的头文件了,不用再考虑路径问题,因为属性表文件都已经设置好了。

使用属性表文件的另一个场景是项目已经通过属性表引第三方的库,此时需要在本地准备好第三方的库,然后修改属性表文件中的附加头文件路径和附加库路径与本地一致。用 notepad 之类的文本编辑软件打开属性表文件,会发现其中的内容似曾相识,是的,它们都是 VC 的项目文件中的内容。如果要修改附加头文件搜索路径,可以找到名为“AdditionalIncludeDirectories” 的标签(tag),将其内容修改为本地准备好的第三方库的 include 目录,然后找到名为 “AdditionalLibraryDirectories” 的标签,将其内容修改为本地准备好的第三方库的 lib 目录。修改完这两个标签的内容,就完成了属性表文件的修改,此时不用对项目配置做任何修改就可以正常链接使用本地的第三方库了。当然,属性表文件还有很多未知的内容,我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹泡泡的小猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值