在一个解决方案中具有多个(不同)构建配置的多个项目

问题描述:

在同一个VS项目中,解决方案还包含多个项目的多个构建配置的正确和简单的步骤方式是什么?这些项目会有不同的构建配置。基本上,我正在寻找类似项目A的Dll Debug,Dll Release,静态(库)调试和静态(库)发布,项目B与调试&版本构建.exe。在一个解决方案中具有多个(不同)构建配置的多个项目

这不是它的工作方式。如果您让库选择静态链接CRT或使用CRT的DLL版本,则您也必须在EXE项目上具有相同的选项。混合这些选项通常会产生大量的链接器错误。即使您设法避免它们,当来自.lib的函数使用EXE中函数的不同存储器分配器时,灾难也会在运行时触发。

使用“他们所有”的方法没有多大意义。只要你知道你只会使用静态库并创建一个单一的EXE blob,那么CRT的静态版本就很有意义。使您的程序更容易部署。如果你有一天在考虑使用DLL,那么只有CRT的DLL版本才有意义。

+0

我要找如何库源提供一个建立Dll或者静态库的选项(或两者)。有可能是一个单独的项目,建立一个示例可执行文件或测试。 – KTC 2010-06-01 00:31:01

+0

@KTC:好的,没关系。如果您选择EXE不具备的配置,VS将只生成.libs。 – 2010-06-01 07:35:17

实现此目的的最简单方法是创建编译相同源的多个项目。您可以为每个需要的案例(DLL,Static Lib)提供项目。然后,您可以对这些项目进行多种配置,以便它们可以生成多种变体。

项目A(DLL)

  • “DebugStatic” 配置 - 调试,静态CRT - > MYLIBDS.DLL
  • “ReleaseStatic” 配置 - 推出,静态CRT - > MYLIBS.DLL
  • “ DebugDynamic” - 调试,DLL CRT - > MYLIBD.DLL
  • “ReleaseDynamic” - 发行,DLL CRT - >中是指mylib.dll

项目B(LIB)

  • “DebugStatic” 配置 - 调试,静态CRT - > MYLIBDS.LIB
  • “ReleaseStatic” 配置 - 推出,静态CRT - > MYLIBS.LIB
  • “DebugDynamic” - 调试,DLL CRT - > MYLIBD.LIB
  • “ReleaseDynamic” - 释放,DLL CRT - > MYLIB.LIB

您可以用同样的方法来生成对于ANSI与Uni​​code中,86与64,单线程与不同的二进制文件多线程等。每个项目都包含相同的集合根据需要使用带条件代码块的源文件。然后,您可以添加这样的事情与图书馆相关的头文件,以使其更容易在相应的版本链接:

#ifdef _DEBUG 
    #ifdef _DLL 
    #pragma comment(lib, "MYLIBD.LIB") 
    #else 
    #pragma comment(lib, "MYLIBDS.LIB") 
    #endif 
#else 
    #ifdef _DLL 
    #pragma comment(lib, "MYLIB.LIB") 
    #else 
    #pragma comment(lib, "MYLIBS.LIB") 
    #endif 
#endif