【IDL】IDL程序发布方法总结
发表于 2013-02-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到当前系统目录即可。
图:使用Export按钮进行程序发布
图: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控制台会出现构建进程和结果提示,如图所示。
图:右键选择构建工程
图:构建工程设置界面
图:构建进度和结果提示
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路径下含有如下文件:
三、调用了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搜索路径。
图:添加路径
(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)
- 单个或较少源码文件时,利用SAVE命令创建SAV文件,方法与纯IDL程序创建SAV文件相同,这里不再赘述。
- 多个源码文件时,建议使用构建工程的方法创建SAV文件。与纯IDL程序不同的是,需要先修改工程构建属性(右键选择属性即可)。如图所示,从左侧选择工程构建属性。
- 对于IDL8.0及之前版本,需要取消勾选RESOLVE_ALL;
- 对于IDL8.2及之后版本,需要勾选RESOLVE_ALL。然后构建工程。
图:工程构建属性修改
(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。