cpp项目的附加依赖项文件,都放在什么地方?如何引入?
发布于 作者:苏南大叔 来源:程序如此灵动~
本文说一个cpp项目的依赖项位置的问题。苏南大叔对cpp项目没有太多的研究,多数原因就是因为这个依赖项没有搞清楚。不知道该放在什么地方,如何加载到这些附加依赖项。本文就谈谈苏南大叔有关cpp项目的依赖项位置方面的经验总结。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10,vs2019。本文虽然很基础简单,但是这个也是苏南大叔反复实验了好几天得出的结论。如有不妥,欢迎留言。
附加包含目录
项目属性页=>C/C++=>常规=>附加包含目录。

注意:这里定义了smc这个自定义的目录,以及vcpkg的自定义include目录(里面放了.h文件,没有.lib文件)。
附加库目录
项目属性页=>链接器=>常规=>附加库目录。

注意:这里只定义了smc这个自定义目录(里面放了codec.h和codec.lib文件)。
附加依赖项
项目属性页=>链接器=>输入=>附加依赖项。

注意:这里定义了一系列.lib的引用。当然,除了codec.lib外,其它的.lib都没有看到在哪里。
cpp项目引入类库
现在先说文件引入,下面的是个小的例子:
#include <string>
#include <thread>
#include <magic_enum.hpp>
#include <nng/nng.h>
#include "codec.h"
#include "util.h"
#include "framework.h"表格总结
| 分类 | 例子 | 放在哪里 |
|---|---|---|
| 系统库 | <string>、<thread> | 系统自己处理,无视 |
| 第三方库 | <magic_enum.hpp>、<nng/nng.h> | 项目根目录/附加包含目录(vcpkg目录) |
| 第三方库 | nng.lib(这个属于隐式调用的) | 附加库目录(自定义的smc或者vcpkg系统目录) |
| 自定义库 | code.h、codec.lib | 项目根目录/附加包含目录(附加库目录) |
| 项目内文件引用 | util.h、framework.h | 项目根目录 |
这个解决方案里面,
- 有个自定义的目录
smc/,放了自定义的库codec.h和codec.lib。 - 知名第三方库
nng/spdlog/lame/magic_enum等一系列.h文件,通过vcpkg放在了installed\installed\x86-windows-static\include\目录下面。 - 知名第三方库
nng/spdlog/lame/magic_enum等一系列.lib文件,通过vcpkg放在了installed\installed\x86-windows-static\lib\目录下面。 - 上面的这些第三方的
.h或者.lib目录,也可以放在根目录下面或者自定义的附加库(包含)目录smc/下面。但是,如果放在这个下面的话,可能就需要定义“附加依赖项”了。
nng.lib
这段内容可能有偏颇,大家就不用看了。
作为范例的这个解决方案里面,最特殊的就是nng.lib了,可能和它的使用方式有关。
| 项目 | 解压include目录 | 对应lib文件 |
|---|---|---|
| spdlog、magic_enum | 需要 | 不需要 |
| nng | 需要 | 需要win32动态(.lib+.dll),需要配置附加库设置识别nng.lib |
| nng(vcpkg安装) | 隐式解压 | 隐式加载,x86-windows-static |
相关文章
- https://newsn.net/say/cpp-spdlog.html
- https://newsn.net/say/cpp-magic_enum.html
- https://newsn.net/say/cpp-nng.html
- https://newsn.net/say/nng-lib.html
结语
cpp项目的.exe相比较c#的exe更好更快更有优势,最明显的是:不用安装.net framework,解决了被笨重的framework框架所支配的问题。