highflybird 发表于 2016-6-25 18:54:35

再谈用VS+VC绿色版编译多版本

本帖最后由 highflybird 于 2016-10-24 09:44 编辑

以前发帖谈到过用VS2010+ VC6,VC2002,VC2005,VC2008绿色版进行多个版本的编译。
今天对那个方法改进一下,使得它更简单。
这里说的VS 指的是Microsoft Visual Studio 2010或者更高版本;
绿色版的仅仅包含了只含编译器及相关开发库文件,可不含IDE或其他。存放目录可任意,无须修改注册表。
假设你只是装了VS2010, (实际这个方法适用于VS2012,VS2013,VS2015)

步骤:
1.先下载安装 Daffodil.ENU.msi,下载地址:
http://daffodil.codeplex.com/releases/view/55712
2.进入各个编译器的bin目录,检测 CL.exe, LINK.exe这两个程序(可能还有rc.exe)能否正常运行,是否缺少库文件,一般来说可能或缺少:
mspdbXX.dll,msObjXX.dll。把缺少的拷贝进去。
3.进入 盘符:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets;可以看到下面有子目录
V60,V70等等。以VC2002为例子,进入Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v70:
编辑 Microsoft.Cpp.Win32.v70.props文件(可在编辑之前先备份原文件):
找到:
    <VCInstallDir>......</VSInstallDir>这一段:
改成:
    <VSInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS@ProductDir)</VSInstallDir>
    <VCInstallDir>$(VSInstallDir)vc7\</VCInstallDir>
这里我用了$(VSInstallDir)vc7\来代表VC2002的存放位置为:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC7,你应当视你的目录修改这个
譬如:<VCInstallDir>D:\DEV\VC2002\</VCInstallDir> 之类的。
对于其他版本和64位的类似修改.
4.在VS里面分别设置各个版本的platform toolset即可
VC6-->v60
VC2002-->v70
VC2005-->v80
VC2008-->v90
VC2010-->v100
等.
然后编译,OK.


highflybird 发表于 2016-6-25 18:55:31


上传一个文件供大家测试用:

BDYCAD 发表于 2016-6-27 13:52:08

springwillow 发表于 2016-6-28 13:07:37

高版,请教个问题,Daffodil.ENU.msi平台工具只有V60、V70、V80,如果只装VS2015的情况下,V90、V100、V110平台该怎么建立呢?我现在是装了VS2010、VS2012和VS2015,这样的话平台就都显示了。不装VS2010和VS2012就没有V90-V110平台

highflybird 发表于 2016-6-28 17:21:45

把全装时候的拷贝过来就行了吧。没测试。

edata 发表于 2016-7-1 18:24:30

感谢分享,先保存起来。以前试过绿色版的,鉴于有时候需要IDE,所以后面全部用的安装版了。目前是vs6-2010全部安装的,vs2010统一编译。
不知道高版对于向导建立arx项目的时候有没有办法直接自动加入平台配置设置,包括包含目录,等配置。

badboy518 发表于 2016-8-1 12:05:13

springwillow 发表于 2016-6-28 13:07 static/image/common/back.gif
高版,请教个问题,Daffodil.ENU.msi平台工具只有V60、V70、V80,如果只装VS2015的情况下,V90、V100、V110 ...

原文如下:
Daffodil provides native multi-targeting platform toolsets for Visual Studio 2010 C++ developers who need to target older versions of Visual Studio.
=====================================
VS2010及后续版本不再直接支持,必须安装完整的程序才可以。

panfanggui 发表于 2016-8-3 09:56:45

本帖最后由 panfanggui 于 2016-8-3 11:36 编辑

vs2015使用vc70平台工具没成功过,其他的VC6-VC110均成功(mfc程序)。VC70 对应的net framework 1.0在windows 10上根本就不支持。错误:C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v70\Microsoft.Cpp.Win32.v70.targets(307,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515

在vs2015使用vc70平台成功的请告诉一下该怎样解决的。

edata 发表于 2016-8-4 01:44:33

发现vc90 debug配置下编译出错
fatal error C1902: Program database manager mismatch; please check your installation
解决方法:

从”C:\Program Files\Microsoft Visual Studio 9\Common7\IDE” 拷贝文件”mspdbsrv.exe,mspdbcore.dll”到”C:\Program Files\Microsoft Visual Studio 9\VC\Bin”。

这两个是调试相关的程序,在高飞的绿色版中缺失,导致无法调试,只能Release配置。。
下面附上这两个文件



highflybird 发表于 2016-8-4 11:13:49

panfanggui 发表于 2016-8-3 09:56 static/image/common/back.gif
vs2015使用vc70平台工具没成功过,其他的VC6-VC110均成功(mfc程序)。VC70 对应的net framework 1.0在wind ...

我的没问题,各版本测试均OK.
在vs2015的提示符下,进入vc7的bin目录,运行cl.exe ,看是否可运行?
页: [1] 2
查看完整版本: 再谈用VS+VC绿色版编译多版本