VisualStudio第三方库配置方法

VisualStudio

Posted by Jow on September 19, 2019

目录

  1. 在工程属性中配置第三方库
  2. 相对路径的介绍
  3. 目录类型

Always study, then you will get you want.

对于任何一种编程语言来说,其提供的标准库以及第三方库都是一个值得我们关注的内容,因为这样可以使我们站在巨人的肩膀上做事,从而更方便快捷地完成我们想要做的事情。对于C++这种语言来说,标准库在引用正确的头文件后,便可以使用其提供的相关功能了;而对于第三方库来讲,可能还需要花一点点时间做一些配置,才能正常的使用这些库。下面对于在Visual Studio平台下的第三方库的配置方法进行一些总结。

在工程属性中配置第三方库

配置第三方库的一个最简单的方法是直接在工程属性中进行相关内容的填写。假设这里新建了一个名为3rdlibConfigDemo的工程,我们可以右键点击它,然后选择最下方的属性按钮,打开配置的窗口。

  • 第三方库头文件路径的配置

为了能够让编译器在编译时能够找到第三方库的头文件(.h、.hpp等等扩展名的头文件)的位置,首先需要将第三方库的头文件路径添加到属性当中。具体配置的位置可以在属性当中的配置属性-VC++目录-Include目录中找到。然后我们便可以在代码中使用#include预编译指令,将第三方库的头文件包含进来编写相关的代码了。

  • 第三方库库文件路径以及引用库名称的配置

为了能够让链接器在编译时能够找到第三方库的库文件(.lib)的位置,还需要将第三方库的库文件路径添加到属性当中。具体配置的位置可以在属性当中的配置属性-VC++目录-Library目录中找到。

在添加库文件目录之后,我们还需要指定具体需要链接哪些库文件。添加库文件的名称可以参考第三方库的文档,当然有些库在引用头文件时,会自动的指明需要引用库的名字(例如boost),所以这个步骤在某些情况下也可以省略。但是由于大多数第三方库不支持这种自动指明引用库名字的方式,所以这个步骤还是必须走的过程。具体配置的位置可以在属性当中的配置属性-连接器-其他依赖中找到。

当然除了在链接器输入中附加依赖项之外还有一种方法

使用 #pragma comment( comment-type [,”commentstring”] )

该宏放置一个注释到对象文件或者可执行文件。

comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串。

remarks:

  1. compiler:放置编译器的版本或者名字到一个对象文件,该选项被linker忽略的。
  2. exestr:在以后的版本将取消。
  3. lib:放置一个库搜索记录到文件中,这个类型应该是和commentstring(指定你要Liner搜索的lib的名称和路径)这个库的名字放在Object文件的默认库搜索记录的后面,linker搜索这个这个库就像你在命令行输入这个命令一样。你可以在一个源文件中设置多个库记录,它们在object文件中的顺序和在源文件中的顺序一样。如果默认库和附加库的次序是需要区别的,使用Z编译开关是防止默认库放到object模块。
  4. linker:指定一个连接选项,这样就不用在命令行输入或者在开发环境中设置了。

我们经常用到的是#pragma comment(lib,”*.lib”)这类的。#pragma comment(lib,”Ws2_32.lib”)表示链接Ws2_32.lib这个库。和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的程序别人在使用你的代码的时候就不用再设置工程settings了

相对路径的介绍

首先,相对路径是针对工程文件(*.vcxproj)而言的。

  1. 假设工程名为test.vcxproj
  2. 路径为:D:\test\test\test.vcxproj
  3. 第三方库为文件夹,名为:folder,里面包含:folder\head\forder.h;folder\lib\forder.lib;folder\bin\forder.dll;
  4. 路径为:D:\test\folder
  5. 则包含目录为:..\folder\head
  6. 库文件目录为:..\folder\lib

其中两个点“..\”表示在工程文件(*.vcxproj)的上一级目录。

若果是一个点“.\”则表示和工程文件(*.vcxproj)在同一级目录。

如果要返回多级目录,重复使用双点“..\”,表示为....\

目录类型

可执行目录

在其中搜索可执行文件的目录。 对应于 PATH 环境变量 。

包含目录

在其中搜索源代码中所引用的包含文件的目录。 对应于 INCLUDE 环境变量 。

引用目录

通过 #using 指令在其中搜索源代码中所引用的程序集和模块(元数据)文件的目录。 对应于 LIBPATH 环境变量 。

库目录

在其中搜索库 (.lib) 文件的目录;其中包括运行库。 对应于 LIB 环境变量 。 该设置不适用于 .obj 文件,若要链接到 .obj 文件,请在“配置属性” > “链接器” > “常规”属性页上选择“其他库依赖项”,然后指定文件的相对路径 。

库 WinRT 目录

搜索用于通用 Windows 平台(UWP) 应用的 WinRT 目录文件的目录。

源目录

在其中搜索用于 IntelliSense 的源文件的目录。

排除目录 Visual Studio 在每次编译之前都会查询所有文件上的时间戳,确定自上次编译后是否修改过任何内容。 如果项目具备一些大型且稳定的库,则通过从时间戳检查中排除这些库,可以潜在地加快生成时间。