zoukankan      html  css  js  c++  java
  • 也谈ObjectARX多版本批量编译

    也谈ObjectARX多版本批量编译

    by edata 2017-12-10

    因某些原因,我的电脑系统依旧是windows XP,所以能安装的vs最高版本是vs2010,以下均在vs2010上实现,其他更高vs一样可以实现,原理是一样的。

    我的方式比较特殊,采用的是(hightflybird)的多版本解决方案,参见:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=172590&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline

    安装vs2010,其他版本均只有vc编译器。

    一、准备工作:

    1.  安装Daffodil.ENU,下载地址:http://daffodil.codeplex.com/releases/view/55712

    2.  解压绿色的vc编译器。(或者全部安装各版本的vs)。

    二、安装完Daffodil.ENU后,打开xp系统C:Program Files或win7以及更高系统C:Program Files(x86)文件夹(以下简称Program Files,不再区分)。

    在Program Files文件夹依次打开C:Program FilesMSBuildMicrosoft.Cppv4.0Platforms

       

    我们先打开Win32PlatformToolsets,下面有v60~v100等文件夹。

      

    先用文本软件如notpad++打开v60文件夹下的Microsoft.Cpp.Win32.v60. props

      

    在notpad++的语言菜单下,选择xml 语法高亮。

      

    我们主要对<VCInstallDir> <IncludePath> <LibraryPath>进行修改和添加 

     

     <VCInstallDir></VCInstallDir>之间改成如<VCInstallDir>E:vcvc6</VCInstallDir>

    注意vc6后面一定要加一个””,不然后面的目录无法识别这个路径。

    在这个之后添加一个新的自定义标记

    <MyARXDir>C:ObjectARX 2002</MyARXDir>

    这个是指定ARX SDK的文件夹位置,MyARXDir是我自己定义的,后面可以用到。

    继续添加 <MyPlatform>x86</MyPlatform> ,这个也是自定义,后面用到。

    向下寻找< IncludePath>标记,在<IncludePath Condition="'$(IncludePath)' == ''">之后添加一个新的包含路径,$(MyARXDir)inc;这个MyARXDir就是我们刚刚定义的,直接用$(标记)的方式引用过来了。

    同上继续寻找<LibraryPath Condition="'$(LibraryPath)' == ''">,在这后面添加$(MyARXDir)lib;,

    继续在</PropertyGroup>之前(注意这里写的是之前)添加一个新的标记

    <CharacterSet>ASCII</CharacterSet>

    表示这个v60采用的是字符集是 “使用多字节方式”。          

    以下是完成后的截图(注意:我这里vc6是安装版的,所以VCInstallDir没有修改)

     

    同样的方式,我们修改v70文件夹下的Microsoft.Cpp.Win32.v70. props

    其他原理同上不再解释,仅仅提供图片参考。

    这里需要注意的是,我采用的是绿色版的v70编译器,修改了路径以及

    <WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$(VCInstallDir)PlatformSDK</WindowsSdkDir>

    这个标记是指定windowsSDK的位置,MFC程序会用到这个路径。

     

    继续v80改造

    见图,注意v80,也就是ARX2007开始字符集集是unicode,向导默认的是unicode那个CharacterSet就可以不要了,或者将ASCII改为Unicode。

     

    继续v90

     

    继续v100

     

     以上我们的win32平台改完了。

    现在看看x64

     

    V80x64

     

    V90x64

      

    V100x64

     

    MSBuild部分全部改完了。

     -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    下面要对arx wizard向导修改了。

    向导部分建议先按照我另外一个博文修改修改,修复一些常见问题。

    详见:http://www.cnblogs.com/edata/p/6821379.html

    我采用的向导版本是arx wizard2012,原因是这个版本在vs2010中有工具条,方便添加命令。以及自定义实体类的相关派生继承类。Arx2013开始就没有工具条这玩意了。。

    打开路径C:Program FilesAutodeskObjectARX Wizards for AutoCAD 2012ArxAppWizScripts1033

    右键notepad++ 打开default.js文件

     

    修改中间目录config.IntermediateDirectory ='$(Configuration)\';

     

    修改,注意我们这里终于用上了前面定义的MyPlatform,这样我们生成的文件名就变成了

    sk_ArxProject2.R19d.x86.arx这样的格式。

    if ( bDotNetModule )
    
                      LinkTool.OutputFile ='$(outdir)' + szRds + strProjectName + '.$(Configuration)' + '.$(MyPlatform)' +'.dll' ;
    
                  else if ( bArxAppType )
    
                         LinkTool.OutputFile ='$(outdir)' + szRds + strProjectName + '.$(Configuration)' + '.$(MyPlatform)' + '.arx' ;
    
                  else
    
                         LinkTool.OutputFile ='$(outdir)' + szRds + strProjectName + '.$(Configuration)' + '.$(MyPlatform)' +'.dbx' ;
    

      

      

    修改debugtool自动加载

      

    上面那个strAcadPath是acad的路径,定义在最后的部分,我用的是cad2011调试,根据自己的情况更换成默认的版本。 

     

    现在基本上改完了,那么我们这么折腾有什么意义呢。。

    下面就简单介绍一下。

     

     

    下面要新建新的解决方案配置,先来个R19d基于debug的,如果是Release我会直接用R19,基于release,这里建议先从高版本开始新建配置,R19 R18 R17 R16 R15,(如果是向导生成的不建议直接用R15,因为向导的代码和R15的差异太大,修改起来得不偿失,可以通过R15升级到R19,也就是我安装vc6的其中一个原因。通过vc6新建arx项目,再通过vs2010打开升级到vs2010项目,修改一些附加库,现在这个R15版本很少用,具体不再讲述。)

     

    下面修改一下配置对应的平台,除了R16之外是win32,其他均是所有平台。

     

     

     

    全部成功。

    后记:通过这种方式建立arx项目,不需要再去设置其他的东西,如包含目录,库目录。即可正常使用,当然,如果是需要额外的arxsdk,如brep之类的,还是需要设置的。也可以采用前面的方式吧相应的库和包含路径添加上去。真正实现一劳永逸。实际上理论上通过向导也可以自动生成R19d,R18d,这样的配置,还需要继续研究,剩下的就看你们的了。

    另外能不能在vs2010上编译R21,R20项目,也许还有R22,我可以很你们答案是可以的。至于怎么实现,也和这个差不多的,也许是下一遍博文了,也许没有了。^_^。

    Ps:键盘坏了,码字费力,一按到ESC键盘,就关机。。

     附上修改后的文件,供参考

     参考文件下载 :下载

  • 相关阅读:
    16条很有用的Chrome浏览器命令
    通用测试用例
    Vue中@click、@click.stop和@click.prevet用法
    Vue事件的函数传参
    Vue事件的基本用法
    vue中v-on和v-bind的区别
    Vue中数据的双向绑定方法
    v-once用法
    v-clock、v-text、v-html和v-pre详解
    IDEA给已有项目添加maven依赖
  • 原文地址:https://www.cnblogs.com/edata/p/8016789.html
Copyright © 2011-2022 走看看