用别人的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工程需要配置的各个目录。

扫描二维码关注公众号,回复: 3791482 查看本文章

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 , 但读写这个文件可以不写全路径,这是因为有库目录的存在。

转载于:https://blog.csdn.net/autocyz/article/details/51821299

谢谢作者,仅以此记录!谢谢

猜你喜欢

转载自blog.csdn.net/qq_39575835/article/details/83386383