【IDL】IDL程式釋出方法總結

地理遥感生态网平台發表於2024-06-28

一、純IDL程式在IDL7.0之前版本的釋出方法

(1) Windows平臺下根據主程式名建立project,使用Export按鈕釋出

釋出後的程式若需要簡化體積,只需bin.x86下包括freetype2_1_3.dll、idl.dll、idl.pref、MesaGL6_2.dll、MesaGLU6_2.dll、osmesa6_2.dll、ug3220.dll及myApp.exe檔案,\lib\hook\下包含idlrtmain.sav檔案即可執行,如果呼叫到了相關函式只需複製對應的DLM到當前系統目錄即可。

【IDL】IDL程式釋出方法總結

圖:使用Export按鈕進行程式釋出

【IDL】IDL程式釋出方法總結

圖:Export Files對話方塊

(2) Unix下使用make_rt命令。

二、純IDL程式在IDL7.0及以上版本中的釋出(Windows版本)

IDL7.0及以上版本,用MAKE_RT命令代替了Export功能,下面介紹釋出步驟。

1. 建立SAV檔案

方法1使用SAVE命令完成

對於單個或少量原始碼檔案,使用SAVE命令較為方便。以helloworld.pro為例,使用如下命令編譯SAV檔案,編譯後的SAV檔案可雙擊執行。

IDL> .RESET_SESSION  ;重置IDL程序,或點選工具欄按鈕重置IDL

IDL> .COMPILE HELLOWORLD.PRO

% Compiled module: HELLOWORLD.

IDL> SAVE, 'HELLOWORLD', FILENAME = 'D:\TEMP\HELLOWORLD.SAV', /ROUTINES

注:生成的SAV檔名必須與主過程名一致,否則無法執行。

方法2透過構建工程建立SAV檔案

對於含有多個原始碼的工程,使用SAVE命令較為繁瑣,需要對所有原始碼進行編譯後才能執行SAVE命令。所以推薦使用構建工程的方法。

首先保證所要編譯的原始碼以工程形式存在,如果不是,可以新建與主過程名同名的工程,將原始碼和資原始檔複製進去即可。然後在工作臺的資源管理器中,右鍵選擇目標工程,點選構建工程(IDL 8.2中為構建專案),設定項按預設即可,在IDL控制檯會出現構建程序和結果提示,如圖所示。

【IDL】IDL程式釋出方法總結

圖:右鍵選擇構建工程

【IDL】IDL程式釋出方法總結

圖:構建工程設定介面

【IDL】IDL程式釋出方法總結

圖:構建進度和結果提示

2. 釋出EXE檔案

在建立完SAV檔案後,就可以利用SAV檔案釋出EXE程式了。

首先收集相關資訊:

  • 選擇你要執行的程式的名字:myApp
  • 確定釋出的完整輸出路徑存在,否則MAKE_RT會報錯:OutDir
  • 知道包含你程式所有程式碼的sav檔案完整路徑;savefile

執行MAKE_RT過程

MAKE_RT, 'myApp', OutDir, SAVEFILE=savefile

新增額外檔案到釋出的程式中;程式中使用到了某些配置檔案或基礎資料檔案則需要複製到對應的目錄下。

修改啟動指令碼-myApp.ini。

  • [DIALOG]
  • Show=False ;對話方塊介面是否彈出<True和False>
  • BackColor=&H6B1F29 ;對話方塊的背景顏色
  • Caption=<any string> ;對話方塊的標題文字
  • Picture=.\splash.bmp ;對話方塊需要顯示的影像,標準大小480 x 335,若影像大則大的部分顯示背景色;
  • DefaultAction=<path to application> ;執行時執行的程式碼;

以IDLViewer為例,收集資訊如下:

  • 程式名稱:IDLVIEWER
  • 釋出路徑:D:\TEMP
  • SAV檔案路徑:D:\IDLViewer\IDLViewer\idlviewer.sav

在IDL控制檯輸入如下命令:

MAKE_RT, 'IDLVIEWER', 'D:\TEMP', SAVEFILE = 'D:\IDLVIEWER\IDLVIEWER\IDLVIEWER.SAV'

Make_RT常用關鍵字:

  • Overwrite:覆蓋之前釋出的版本,重新生成檔案
  • WIN32:釋出程式以32位模式執行
  • WIN64:釋出程式以64位模式執行
  • VM:以虛擬機器模式執行釋出的程式

釋出成功之後,在D:\Temp\idlviewer路徑下含有如下檔案:

【IDL】IDL程式釋出方法總結

【IDL】IDL程式釋出方法總結

圖:idlviewer.ini配置檔案

三、呼叫了ENVI函式的IDL程式釋出方法

如果IDL程式中呼叫了ENVI函式,那麼在釋出的時候有幾個需要注意的地方。下面是常用的幾個方法。

注:在原始碼中使用瞭如下程式碼呼叫ENVI函式,建議在前面加入COMPILE_OPT IDL2,保證在編譯的時候不會出錯。

ENVI, /RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT

1. 模仿ENVI的快捷方式

該方法僅對IDL7.0之前的版本適用,在IDL7.0及之後版本下暫時不能用。假設你的程式的名稱是myApp,透過下面的步驟釋出:

(1) 建立.run檔案

先建一個文字檔案,命名為myApp.run,裡面寫上程式的名字myApp。

(2) 新增工作目錄

開啟idl編輯器把打包程式目錄(包含sav檔案的目錄)修改成idl工作目錄或者是新增到IDL搜尋路徑。

【IDL】IDL程式釋出方法總結

圖:新增路徑

(3) 建立快捷方式

建立一個快捷方式。在快捷方式的屬性中目標加上一下命令

idlde路徑 -minimized -noconfirmexit -nosplash @ "run檔案路徑"

例如:

D:\Program\envi43\IDL63\bin\bin.x86\idlde.exe -minimized -noconfirmexit -nosplash @"C:\protest\myApp.run"

最簡單的方法:直接複製ENVI+IDL的快捷方式,把最後envi.run的檔案路徑改成你的run檔案路徑就行

(4) 雙擊即可執行。

這種方式釋出出來的程式的執行需要安裝ENVI及IDL,並且設定IDL的工作路徑,否則出錯。

2. 使用MAKE_RT命令釋出

該方法在各個版本下均測試透過,在IDL8.2下的操作步驟為:

(1) 建立SAV檔案

  • 單個或較少原始碼檔案時,利用SAVE命令建立SAV檔案,方法與純IDL程式建立SAV檔案相同,這裡不再贅述。
  • 多個原始碼檔案時,建議使用構建工程的方法建立SAV檔案。與純IDL程式不同的是,需要先修改工程構建屬性(右鍵選擇屬性即可)。如圖所示,從左側選擇工程構建屬性。
    • 對於IDL8.0及之前版本,需要取消勾選RESOLVE_ALL;
    • 對於IDL8.2及之後版本,需要勾選RESOLVE_ALL。然後構建工程。

【IDL】IDL程式釋出方法總結

圖:工程構建屬性修改

(2) 釋出為EXE檔案

使用MAKE_RT命令即可,方法與純IDL程式釋出方法一致,將資原始檔和許可檔案複製進去之後,修改INI配置檔案。將[Dialog]下的DefaultAction後面修改為系統安裝IDL的IDLrt.exe的完整路徑,例如:C:\Program Files\Exelis\IDL82\bin\bin.x86_64\idlrt.exe -rt=test_envi.sav。

【IDL】IDL程式釋出方法總結

相關文章