也談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鍵盤,就關機。。

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

 參考文件下載 :下載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM