我有一个母C++库(Win32,而不MFC)编制下Visual Studio2005年,使用一些解决方案。

我想可以选择汇编并将其作是静态的图书馆或Dll,取决于需求特定解决方案,其中我使用它们。

什么是最好的方式做到这一点?我认为这些方法:

1.多个项目文件

  • 例如:"foo_static.vcproj"vs"foo_dll.vcproj"
  • 专业:容易产生新的图书馆,没有太多的手册vcproj处理.
  • Con:设置,文件列表,等等。在两个地方得到同步的太容易了。

2.单一项目文件,多配置

  • 例如:"Debug|Win32"vs"调试DLL|Win32",等等。
  • 专业:文件清单更易于保持同步;汇编的选项比较容易保持同步
  • Con:我建立两个Win32和智能设备的目标,所以我已经拥有多个配置;我不想让我的组合爆炸坏("静态图书馆FooPhone|WinMobile6","动态库FooPhone|WinMobile6","静态图书馆BarPda|WinMobile6",等等。
  • 更糟糕的骗局:VS2005年有一个坏习惯的假设,如果你有一个结构定义平台"Foo",然后你真的需要它的所有其他平台在你的解决方案,并随意插入的所有排列的结构/平台配置的所有受影响的vcproj文件,无论是否有效。(Bug提交MS;关闭WONTFIX.)

3.单一项目文件,选择静态或动态的通过vsprops的文件

  • 例如:储存的适当vcproj碎片在酒店片的文件,则适用"FooApp静态的图书馆"属片config/平台的组合,当你想静库,并应用"FooApp DLL"属片的时候你想Dll。
  • 赞成: 这是我真正想做的!
  • 缺点: 它似乎不可能的。 它似乎。vcproj属性交换机之间的静态和动态图书馆(该ConfigurationType属性的结构元件)不可重写。vsprops的文件。微软公布的架构为这些文件仅列出了 <Tool> 和 <UserMacro> 元素。

编辑:在情况下,有人建议,我也尝试了更多的"聪明的"版本的#3,我在其定义中的一个。vsprops含UserMacro称为"ModuleConfigurationType"值"2"(DLL)或"4"(静态的图书馆),并改变结构。vcproj有 ConfigurationType="$(ModuleConfigurationType)".Visual Studio默默无警告,删除"属性"和替换 ConfigurationType="1".这样有帮助!

我错过一个更好的解决办法?

有帮助吗?

解决方案

我可能已经错过了什么,但你为什么不能,你定义的DLL项目没有文件,以及只有它的链接lib创建的其他项目?并且,相对于设置,可以因他们在vsprop文件...

其他提示

有一个简单的方法来创建两个静态和dll lib版本中的一个项目。

创建你dll项目。然后做下:

只是创造一个让makefile。蝙蝠文件的运行lib工具。基本上,这只是这个:

lib /NOLOGO /OUT:<your_lib_pathname> @<<
<list_all_of_your_obj_paths_here>
<<

然后,在项目中,添加后建立的事件,其中命令只是运行。蝙蝠文件(或让或perl).然后,你总是会得到两dll和静态lib。我不要从诋毁visual studio为不允许的工具,为此存在的一个项目之前连接(在工具的流动)。

我认为典型的方式这样做是选择2以上。它是我用什么和什么我已经看到过一个数字图书馆和公司。

如果你找到它不能为你工作然后一切手段使用别的东西。

好运气。

我喜欢2的配置方式。

安装的所有公共设置通过'所有配置'项目中的项目属性窗口。之后分离的设置。它的完成。让我们去的编码。

还有非常良好的特征命名为'批量建立',它建立指定的配置,通过转。

多个项目是最好的方式-这是构成我们最广泛地看到在许许多多的项目。

这就是说,它可能是也可能实施的第三个选择通过修改vcproj文件在飞行从外部工具(如一个自定义vbscript),你可以援用自编的文件。你可以使用壳变量控制行为的工具。

注意,你还是应该使用visual studio使建立,makefile只应该发动你的外部工具,如果需要使的功能,那么按照通过的实际建立的命令

我用Visual Studio6.0(仍)由于问题阻止我们迁移到VS2005或更新的。重建造成严重的问题(一切都休息)...所以我们很多人都在考虑游说迁移到GnuC++向前推进结构化的方式最终获得我们的授权Visual Studio产品和到蚀和Linux。

在Unix/Linux很容易建立对所有配置..所以我不能相信什么时候和生产力水槽,它是试图以及完成同样的任务在Visual Studio.为VS6.0我们迄今为止发现,只有两个单独的项目似乎是可行的。我还没有尝试了多个配置的技术,但也会看到,如果它的工作原理在旧VS6.0.

为什么不去第1版和生成的第二组项目文件从第一次使用一个剧本什么的。这样,你知道,这种差别只是件需要建立一个dll或静态lib。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top