visual studio配置中包含目录和附加包含目录的区别以及auto-linking

引用

http://blog.csdn.net/qing101hua/article/details/53841827
http://blog.csdn.net/zcedar/article/details/51444343

两个问题

  1. 在visual studio中配置第三方代码库时涉及到包含目录和库目录,那么Include Directories和Additional Include Directories,以及Library Directories和Additional Library Directories该如何区分,如何设置呢?
  2. 第三方库是否支持auto-linking,什么时候指定附加依赖项lib,什么时候不需要?

VS中C++的包含目录、附加包含目录和库目录以及附加库目录的区别

在IDE中,右键一个Project,可以发现有两个地方设置Include的相关目录:

1,VC++ Directories -> Include Directories
2C/C++ -> General -> Additional Include Directories

同理,设置Lib也有两个地方

1VC++ Directories -> LibraryDirectories
2Linker -> General -> Additional Library Directories

应该如何设置呢?

MSDN上的解释如下:

“VC++ Directories -> Include Directories” : Directory settings displayed in the window are the directories that Visual Studio will search for include files referred to in your source code files. Corresponds to environment variable INCLUDE.
More information :
http://msdn.microsoft.com/en-us/library/t9az1d21(v=vs.80).aspx

“C/C++-> General -> Additional Include Directories”: The directory to be added to the list of directories searched for include files. More information :
http://msdn.microsoft.com/en-us/library/73f9s62w(v=vs.80).aspx

下面这个链接中给出了编译器在编译过程中查找包含目录(Include文件)的顺序:

The compiler searches for directories in the following order:

  1. Directories containing the source file.
  2. Directories specified with the /I option, in the order that CL encounters them.
  3. Directories specified in the INCLUDE environment variable.

其中step2中的/I是由C/C++ -> General -> Additional Include Directories设置的。
而step3中的INCLUDE是由VC++ Directories -> Include Directories设置的。
所以从这里看出,不同的设置有不同的编译链接顺序。

因此,总结出两种设置方法:

  • VC++ Directories -> Include Directories配合VC++ Directories -> LibraryDirectories
  • C/C++ -> General -> Additional Include Directories配合Linker -> General -> Additional Library Directories
    但是要注意,由于编译顺序,这种用法情况下需要确保在VC++ Directories -> Include
    Directories中填入$(IncludePath),很简单,选一个空的目录,IDE会自动生成。
    这里写图片描述

最后不要忘了,如果有dll,需要设置环境变量,或者拷贝至exe执行目录

关于auto-linking

在配置opencv和boost库的时候发现了存在这个问题,但是不幸的是opencv并不支持auto-linking,也即是需要在附加依赖库里填写一大堆的库文件名(或者代码中#pargma comment),而boost却不用,它可以自动在lib目录中根据lib的名字寻找到对应的lib进行link,这个就是超级方便的auto-linking功能
stackoverflow上解释:How boost auto-linking makes choice?

http://stackoverflow.com/questions/22805082/how-boost-auto-linking-makes-choice

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值