我有一个包含约 50 个项目的大型视觉工作室解决方案。有 StaticDebug、StaticRelease、Debug 和 Release 的配置。有些库需要 dll 和静态库两种形式。为了获得它们,我们使用不同的配置重建解决方案。配置管理器窗口用于设置哪些项目需要在哪些风格、静态库、动态 dll 或两者中构建。
这管理起来相当棘手,而且必须多次构建解决方案并按正确的顺序选择配置,这有点烦人。静态版本需要在非静态版本之前构建。
我想知道,对于我需要生成静态库和动态 dll 的项目,我创建了两个项目,而不是当前的方案,管理起来是否会更简单。例如:
我可以让这两个项目引用所有相同的文件并构建它们两次,或者我想知道是否可以构建 CoreLib,然后让 CoreDll 链接它以生成 dll?
我想我的问题是,您对如何在这种情况下构建项目有什么建议吗?
Thanks.
在资源管理器中将原始项目文件复制为CoreLib.vcxproj(如果是其他 VS,请检查相应的扩展名)
将 CoreLib.vcxproj 作为现有项目添加到您的解决方案中并保存您的解决方案。
前往属性->配置属性->常规 of CoreLib.
Select 所有配置(左上角)。
改变属性配置类型 to 静态库.
改变属性目标扩展 to .lib .
附加到属性中级目录例如\Lib\ .
前往属性->配置属性->C/C++->预处理器
Select 调试配置(左上角)。
现在编辑属性预处理器定义并改变线路_USRDLL into _USRLIB
Select 发布配置(左上角)。
现在编辑属性预处理器定义并改变线路_USRDLL into _USRLIB
在你的头文件中你应该有类似下面的内容:
#ifdef MyDll_EXPORTS
#define MyDll_API __declspec(dllexport)
#else
#define MyDll_API __declspec(dllimport)
#endif
将其更改为如下所示:
#ifdef MyDll_EXPORTS
#ifdef _USRLIB
#define MyDll_API
#else
#define MyDll_API __declspec(dllexport)
#endif
#else
// Here must deploy your own logic whether static or dynamic linking is used.
// read my comment below
#define MyDll_API __declspec(dllimport)
#endif
现在,您的构建会生成原始 dll 和导入库以及新的静态库!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)