VS工程配置中的一些常用概念

VS工程配置中一些常用概念

在看这篇文章之前首先思考几个问题:
1、什么是解决方案?为什么要有解决方案?
2、我想引用的头文件和我的cpp文件不在同一个文件夹,我改怎么办?能直接引用吗?
3、在配置opencv的时候需要配置的那些库目录、包含目录到底是怎么回事?

思考完上述问题,下面对上述问题进行解答,并介绍一些vs在工程配置的时候常用的一些做法和概念。尽量做到知其然,知其所以然。

一、解决方案(solution)与工程(project)

简单的说解决方案就是多个工程的集合。solution存在的目的就是为了各个project之间方便的共享文件和代码库。假设我有多个project都需要用到一个liblinear的代码库,我不要每个项目中都加载这个库。另外,对于大型的工程项目,为了方便代码的管理和阅读,往往将一个solution中的所.cpp和.hpp文件都集中放在一个文件夹中,然后让多个project直接包含这个文件夹即可。下面以caffe工程作为实例,讲解一下caffe的文件管理层次和构造。

下图是caffe的solution:
这里写图片描述

caffe文件夹下的文件:
这里写图片描述

这里重点关注文件夹下的include、src、Windows文件夹。include存放的是整个solution所有的头文件,src存放的是整个solution所有的源文件(.cpp),window存放的是所有的project文件。如下图所示:

include文件夹下的内容:
这里写图片描述

src文件夹下的内容:
这里写图片描述

Windows文件夹下的内容:
这里写图片描述

二、VS中VC++目录中各个目录的作用

这里写图片描述
上图是一般的VS工程需要配置的各个目录。

1、可执行文件目录

搜索可执行文件的目录,对应于环境变量PATH,

2、包含目录

对应于环境变量 INCLUDE
搜索在源代码中引用的包含文件的目录,即头文件的目录。例如#include

3、引用目录

在该窗口中显示的目录设置是 Visual Studio 将搜索在源代码文件中通过 #using 引用的程序集和模块(元数据)文件的目录。对应于环境变量 LIBPATH。

4、库目录

在该窗口中显示的目录设置是 Visual Studio 将搜索库(包括运行时库)的目录。对应于环境变量 LIB。简而言之,这个目录就是寻找.lib文件的目录。
如果设置错误,会link error,提示”找不到XXX.lib”。
另外,该设置不适用于.obj 文件;若要链接到 .obj 文件,请在“链接器”->“常规”属性页中,选择“附加库目录”,然后指定.obj文件的路径。

5、附加依赖项

C++的库会把函数、类的声明放在.h中,实现放在.cpp或.cc中。编译之后,.cpp,.cc,.c会被打包成一个.lib文件,这样可以保护源代码。所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。这个就是在附加链接库中设置。

6、有了库目录为何还要附加依赖项?

库目录只是查找目录,而我们具体使用哪一个.lib需要指明的,如果不在附加依赖项里填上,就需要在代码里用#pragma comment(lib, “xxx.lib”)来手动指定了。写代码读写一个文件需要写明文件名,这个文件名就相当于那个lib , 但读写这个文件可以不写全路径,这是因为有库目录的存在。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值