我在Visual Studio 2005下编译了许多本机C ++库(Win32,没有MFC),并在许多解决方案中使用。
我希望能够选择编译并将它们链接为静态库或DLL,具体取决于我正在使用它们的特定解决方案的需求。
最好的方法是什么?我考虑过这些方法:
编辑:如果有人建议,我还尝试了一个更“聪明”的#3版本,其中我定义了一个包含名为“ModuleConfigurationType”的UserMacro的.vsprops值“2”(DLL)或“4”(静态库),并将.vcproj中的配置更改为ConfigurationType="$(ModuleConfigurationType)"
。 Visual Studio以静默方式在没有警告的情况下删除该属性并将其替换为ConfigurationType="1"
。非常有帮助!
我错过了更好的解决方案吗?
答案 0 :(得分:5)
我可能错过了一些东西,但为什么你不能用没有文件来定义DLL项目,只是把它链接到另一个项目创建的lib? 而且,关于设置,您可以将它们分解为vsprop文件...
答案 1 :(得分:5)
有一种简单的方法可以在一个项目中创建static和dll lib版本。
创建你的dll项目。然后执行以下操作:
只需创建一个运行lib工具的nmake makefile或.bat文件。 基本上,就是这样:
lib /NOLOGO /OUT:<your_lib_pathname> @<<
<list_all_of_your_obj_paths_here>
<<
然后,在您的项目中,添加一个Post Build Event,其中命令只运行.bat文件(或nmake或perl)。然后,您将始终获得dll和静态库。 我将避免诋毁visual studio,因为不允许在Linker之前的项目中存在这个工具(在工具流程中)。
答案 2 :(得分:2)
我认为这样做的典型方法是上面的选择2。这是我使用的和我见过的许多图书馆和公司所做的。
如果您发现它对您不起作用,那么请务必使用其他内容。
祝你好运。答案 3 :(得分:2)
我更喜欢2种配置方式。
通过项目属性窗口中的“所有配置”项设置所有常用设置。分开设置后。它已经完成了。我们去编码。
还有一个名为“批量构建”的非常好的功能,它依次构建指定的配置。
答案 4 :(得分:0)
多个项目是最好的方式 - 这是我在很多项目中最常见的配置。
也就是说,也可以通过从外部工具(如自定义vbscript)动态修改vcproj文件来实现第三个选项,您可以从make文件调用它。您可以使用shell变量来控制工具的行为。
请注意,您仍然应该使用visual studio进行构建,makefile应该只在需要创建mod时启动外部工具,然后通过实际构建命令进行操作
答案 5 :(得分:0)
由于阻止我们迁移到VS2005或更新版本的问题,我使用Visual Studio 6.0(静止版)。重建会导致严重的问题(一切都会中断)......我们很多人正在考虑游说迁移到GnuC ++,以结构化的方式向前推进,最终让我们从许可的Visual Studio产品转移到Eclipse和Linux上。
在Unix / Linux中,很容易为所有配置构建..所以我无法相信在Visual Studio中尝试完成相同任务会花费多少时间和工作效率。对于VS6.0,我到目前为止发现只有两个独立的项目似乎是可行的。我还没有尝试过多种配置技术,但会看看它是否适用于较旧的VS6.0。
答案 6 :(得分:-1)
为什么不选择版本1并使用脚本或其他东西从第一组生成第二组项目文件。这样你就知道差异只是构建dll或静态库所需的部分。