我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文说一个cpp项目的依赖项位置的问题,苏南大叔对cpp项目没有太多的研究,多数原因就是因为这个依赖项没有搞清楚。不知道该放在什么地方,如何加载到这些附加依赖项。本文就谈谈苏南大叔有关cpp项目的依赖项位置方面的经验总结。

苏南大叔:cpp项目的附加依赖项文件,都放在什么地方?如何引入? - cpp文件引入文件的位置
cpp项目的附加依赖项文件,都放在什么地方?如何引入?(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10vs2019。本文虽然很基础简单,但是这个也是苏南大叔反复实验了好几天得出的结论。如有不妥,欢迎留言。

附加包含目录

项目属性页=>C/C++=>常规=>附加包含目录。

苏南大叔:cpp项目的附加依赖项文件,都放在什么地方?如何引入? - 附加包含目录
cpp项目的附加依赖项文件,都放在什么地方?如何引入?(图4-2)

注意:这里定义了smc这个自定义的目录,以及vcpkg的自定义include目录(里面放了.h文件,没有.lib文件)。

附加库目录

项目属性页=>链接器=>常规=>附加库目录。

苏南大叔:cpp项目的附加依赖项文件,都放在什么地方?如何引入? - 附加库目录
cpp项目的附加依赖项文件,都放在什么地方?如何引入?(图4-3)

注意:这里只定义了smc这个自定义目录(里面放了codec.hcodec.lib文件)。

附加依赖项

项目属性页=>链接器=>输入=>附加依赖项。

苏南大叔:cpp项目的附加依赖项文件,都放在什么地方?如何引入? - 附加依赖项
cpp项目的附加依赖项文件,都放在什么地方?如何引入?(图4-4)

注意:这里定义了一系列.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.hcodec.lib项目根目录/附加包含目录(附加库目录)
项目内文件引用util.hframework.h项目根目录

这个解决方案里面,

  • 有个自定义的目录smc/,放了自定义的库codec.hcodec.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

相关文章

结语

cpp项目的.exe相比较c#exe更好更快更有优势,最明显的是:不用安装.net framework,解决了被笨重的framework框架所支配的问题。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   cpp