前言
我们在项目中经常要依赖第三方库,在VC++中,一般来说是在VS的项目属性当中配置附加头文件路径,附加库路径等等,这个方式也可以,但是有个麻烦的点在于,你每在解决方案里面新建一个项目,都要重新去项目属性中配置,我感觉是有点麻烦的,毕竟每次都要重新敲一遍字母,还容易敲错,下面介绍一种稍微简便的方式,也是我在工作中才学会的,觉得可能对大家有用,分享给大家。
步骤
在开始之前,我们要先有三方库文件,读者应该有才来看这篇文章,怎么获取我这里就不介绍了,这里打个广告,笔者写过一篇文章讲如何使用vcpkg获取三方库,链接如下vcpkg获取三方库。
我先给大家演示这种方法有多简单,为了演示完整,下面这张图截得比较长。
第一步,点击项目的属性管理器界面(上图中被水印遮住了),如果你的VS中没有,那么需要在顶部的“视图”中打开即可;第二步,选择一个编译模式,Debug或者Release,右键添加现有属性表,此时会打开一个文件对话框,读者选择对应的属性表文件即可(下面会讲怎么制作属性表文件),每一个项目都可以像这么添加。
属性表文件
属性表文件本质上是一个xml配置文件,它和你手动配置项目属性的含义是一样的,你可以理解为它是项目属性的文件保存形式。它的方便在于,对于一个三方库,我们在为它写好配置文件后,接下来任何项目导入三方库就不用再去属性管理器中配置,而是直接导入配置文件。这里说的属性表文件是.props后缀的文件,这个文件是可以配置很多属性的,我这里只讲怎么用它配置三方库。并且,配置三方库的属性表文件是有模板的,读者每次配置三方库的时候只需要把模板复制出来稍微改一下就行,下面介绍怎么写属性表文件。
模板
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<IncludePath>$(SolutionDir)OpenSource\ffmpeg\inc;$(IncludePath)</IncludePath>
<LibraryPath>$(SolutionDir)OpenSource\ffmpeg\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup />
</Project>
这是模板,你只需要将$(SolutionDir)OpenSource\ffmpeg\inc
和$(SolutionDir)OpenSource\ffmpeg\lib
改成你的对应路径即可,前者是头文件路径,后者是lib文件路径。这里给大家介绍一下笔者一般是怎么在项目目录下放置三方库的,也是工作后学到的一个不错的方式,如下图所示。
在解决方案目录里面,会新建一个OpenSource目录专门用来放置三方库,例如使用ffmpeg,就在该目录下新建一个ffmpeg目录,如下图所示
1.首先我会分Debug和Release,一般来说,建议尽量把三方库的debug和release版本都搞过来,因为项目调试的时候是在Debug下,发布是在Release下,是有区分的,当然有些三方库可能不好搞到两个版本的,那只有讲究用了。Debug和Release下方三方库的相关文件,如下图所示。
bin下放dll,include下放头文件,lib下放lib文件,pdb下放调试文件(这个根据自己需要,笔者这里是可能需要调试ffmpeg源代码才放的),并且你要把这里头文件路径和lib文件路径替换到上面的属性表模板里面。
2.然后src下放的是三方库的源代码文件,这个也是根据自己需要
3.剩下两个就是属性表文件了,以D结尾的是debug版本,另一个是release
上面的都配置好之后,添加三方库的依赖只需要导入.props文件,VS会自动解析文件帮你添加三方库依赖。
4.最后一步,上面都搞好之后,你还要主动链接三方库,因为我们上面的工作只是告诉了VS路径,像下面这样,好像有方法可以在属性表文件里面把这一步也省了,笔者没研究过,我一般喜欢直接在代码里面写,读者感兴趣可以自己研究。
。