也谈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 Files\MSBuild\Microsoft.Cpp\v4.0\Platforms
我们先打开Win32\PlatformToolsets,下面有v60~v100等文件夹。
先用文本软件如notpad++打开v60文件夹下的Microsoft.Cpp.Win32.v60. props
在notpad++的语言菜单下,选择xml 语法高亮。
我们主要对<VCInstallDir> <IncludePath> <LibraryPath>进行修改和添加
<VCInstallDir></VCInstallDir>之间改成如<VCInstallDir>E:\vc\vc6\</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 Files\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxAppWiz\Scripts\1033
右键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键盘,就关机。。
附上修改后的文件,供参考
参考文件下载 :下载
也谈ObjectARX多版本批量编译的更多相关文章
- Java 7 中的Switch 谈 Java版本更新和反编译知识
Java 7 中的Switch 谈 Java版本更新和反编译知识 学习编程,享受生活,大家好,我是追寻梦的飞飞.今天主要讲述的是Java7中的更新Switch实现内部原理和JAD反编 ...
- 随手写的自动批量编译部署NativeAndroid程序Python脚本
背景 有一堆工程NativeAndroid程序,要一一编译部署编译测试,手头只有AndroidManifest和Makefile,需要一个个Update,Ndk-build,和发包安装测试,很是头疼, ...
- 用批处理批量编译多个解决方案(.sln)
批处理编译解决方案(.sln) @echo off path %SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\ echo 正在生成HelloWorl ...
- 使用.bat 文件,批量编译项目文件。
使用.bat 文件,批量编译项目文件. 2008-6-1来源:www.aspcool.com 作者:PCJIM 点击:次 path %path%;D:\Program Files\Microsof ...
- vc6.0批量编译
一直想研究一下怎么让电脑批处理编译程序,今天就从vc6开始,做个记录,学习一下. VC可以生成make文件(Project->Export Makefile),在设置好环境变量下,执行NMAKE ...
- 如何查看程序被哪个版本编译器编译的linux-gcc
如何查看程序被哪个版本编译器编译的linux-gcc http://bbs.csdn.net/topics/380000949 那是不可能的,除非你加入了调试信息,也就是编译的时候加入了-g参数,然后 ...
- 解决eclipse高版本JDK编译的项目到低版本JDK服务器上不能运行的问题
错误提示信息:Unsupported major.minor version 52.0,意思是说,当前jdk的版本不支持更高版本jdk编译出来的class文件. 我的编译环境,eclipse使用的是j ...
- nginx-1.12.0版本(编译安装)-自定义安装路径
nginx-1.12.0版本(编译安装)-自定义安装路径 安装路径:/application/nginx-1.12.0 1.前期准备 安装编译需要的gcc和gcc-c++ yum install -y ...
- 【内核】linux2.6版本内核编译配置选项(二)
目录 Linux2.6版本内核编译配置选项(一):http://infohacker.blog.51cto.com/6751239/1203633 Linux2.6版本内核编译配置选项(二):http ...
随机推荐
- 用cascade删除有约束的表或记录
删除有约束的表 Drop table TERMPRO_RULE_ROUTE_TYPE cascade constraints:
- 前端学习---css基本知识
css基本知识 我们先看一个小例子: <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- Linux批量“解压”JAR文件
当你需要”解压“很多jar文件时,可以通过很多方式进行,比如下面这种 1,列出每一个jar文件名,逐个展开 for i in $(ls *sour*.jar);do jar xvf $i;done
- uboot启动完成,kernel启动时lcd屏…
先说说开发环境吧: 1 内核:linux2.6.xx 2 uboot:买开发板带的 注释:在最后我又添加了问题得到完美解决的办法. 问题:uboot启动完成,kernel启动时lcd屏幕出现杂色(比如 ...
- 如何给网页标题栏上添加图标(favicon.ico)(转)
如何给网页标题栏上添加图标(favicon.ico) favicon.ico详解: favicon是Favorites Icon的缩写,favicon.ico是指显示在浏览器收藏夹.地址栏 ...
- wordpress+lnmp出现 404 Not Found nginx
在本地使用Apache,因此进行重写规则是.htaccess文件,但在Nginx服务器中此文件不起作用. 只需在网站的虚拟机配置文件中添加如下 location / { if (-f $request ...
- Smarty3——foreach
foreach and foreachelse篇 foreach用于遍历数组,可以是非关联数组,与section相比要简单些,在smarty3中可以接受没有名称的属性,也可以使用smarty2有名称 ...
- Servlet入门第一天
1. 使用 JavaEE 版的 Eclipse 开发动态的 WEB 工程(JavaWEB 项目) 1). 把开发选项切换到 JavaEE 2). 可以在 Window -> Show View ...
- wireshark抓取qq数据包
抓包接口设置成本地连接 点击start,登录qq,输入oicq进行过滤qq包 找到第一个OICQ,点击后,点击oicq-IM software 可以看到自己登录的QQ号码为765343409 本机IP ...
- cmake安装方法
由于Ubuntu14.04的cmake版本为2.8.x,而如果需要cmake3.x版本时,无法生成makefile,有两种方法可以安装cmake3.10.0: 方法1: sudo apt-get in ...