IDL/Widget

IDL App 실행파일 및 배포용 패키지 만들기 [1]

이상우_IDL 2016. 6. 20. 20:32
728x90

제가 몸담고 있는 SELab에서는 IDL/ENVI 관련 교육을 매달 한번씩 정기적으로 진행을 합니다. 이번 6월의 경우는 23, 24일 이틀에 걸쳐 Application Development in IDL이라는 교육이 예정되어 있습니다. IDL에서 배포용 어플리케이션을 제작하는 방법에 관한 내용이며 제가 진행을 합니다. 사실 이 교육은 전통적으로 수요가 그리 많지는 않습니다. 정규 교육으로는 1년에 한번 정도만 편성이 되는데, 참가 희망 인원수가 적어서 무산된 경우도 있었습니다. 그래도 다행히 금년에는 별 탈 없이 성사가 되었습니다. 그래서 이를 기념(?)하기 위하여 모처럼 Widget 프로그래밍 관련 게시물을 하나 올려볼까 합니다.


오늘 다룰 주제는 IDL에서 Widget 프로그래밍에 의하여 제작된 GUI 앱 프로그램에 대한 실행 파일(.sav 파일)을 만든 후, MAKE_RT 명령을 사용하여 배포용 패키지화하는 방법입니다. 예제로 사용할 프로그램은 제가 이 블로그에서 예전에 올렸던 게시물에서 소개되었던 GUI 제작 예제프로그램을 사용하고자 합니다. 이 프로그램은 test_gui.pro라는 파일이었고 이 게시물에 첨부되어 있습니다. 따라서 이 파일을 먼저 받아놓으시기 바랍니다. 프로그램 자체에 관한 자세한 설명은 여기서는 하지 않겠습니다. 역시 이 게시물에 잘 설명이 되어 있으므로 궁금하신 분들은 이 게시물의 내용을 보시면 됩니다.


먼저 실행파일인 .sav 파일을 만드는 방법부터 소개합니다. 시작하기에 앞서서 IDL 워크벤치에서 리셋 버튼을 누르거나 콘솔창에서 .reset 명령을 실행하여 깨끗한 상태로 만들어 두는 것이 좋습니다. 물론 IDL을 띄운 직후라면 굳이 이렇게 안해도 되긴 합니다. 그 다음 실질적으로 가장 먼저 필요한 작업은 다음과 같이 IDL의 콘솔창에서 소스코드인 test_gui.pro를 컴파일하는 일입니다. 물론 워크벤치의 에디터상에서 프로그램을 띄워놓고 상단의 컴파일 버튼을 눌러도 됩니다.


IDL> .compile test_gui

% Compiled module: TEST_GUI_EVENT.

% Compiled module: TEST_GUI.


그 다음에는 다음과 같이 RESOLVE_ALL 명령을 실행해야 합니다. 이 명령은 소스코드인 test_gui.pro가 품고 있는 메인 루틴 및 관련 서브루틴들을 모두 추적하여 컴파일하는 역할입니다. 이 명령을 실행했을 때 뭔가 출력되는 문구들이 있을 수도 있고 그냥아무것도 나오지 않을 수도 있습니다.


IDL> resolve_all


그 다음에는 다음과 같이 SAVE 명령을 사용하여 .sav 확장자를 갖는 실행파일을 생성합니다. 여기서 /ROUTINES 키워드를 반드시 사용해야 합니다. 그리고 FILENAME 키워드에 부여되는 이름은 확장자만 .sav로 바뀔 뿐 나머지 이름은 소스코드와 동일해야 합니다.


IDL> save, /routines, filename='test_gui.sav'


이 과정까지 다 마친 후 "현재 디렉토리"로 설정되어 있는 디렉토리를 확인해보면, test_gui.sav라는 이름의 파일이 생성되어 있음을 확인할 수 있습니다. 이 파일은 그야말로 단독 실행용 파일입니다. 따라서 IDL을 종료하고 이 .sav 파일을 더블클릭해보면 멀쩡하게 실행이 잘 되고 기능도 정상적으로 작동하는 것을 확인할 수 있을 것입니다. 만약에 이 파일의 실행이나 작동에 있어서 문제가 발생한다면, 앞서 언급한 과정들이 순서대로 잘 진행이 되었는가를 다시 한번 확인해보시기 바랍니다.


어쨌든 이와 같은 단독 실행 파일인 .sav 파일을 만드는 과정까지 진행을 했습니다. 물론 이 파일을 제작한 여러분의 컴퓨터에서는 이파일은 단독으로 실행이 잘 됩니다. 그러나 이 파일을 만약 다른 사람에게 주었을 경우 그 사람의 컴퓨터에서도 잘 실행이 될까요? 안타깝게도 꼭그렇지는 않습니다. 여기에는 조건이 있습니다. 여러분이 이 .sav 파일을 생성할 때 사용했던 컴퓨터의 OS 그리고 설치된 IDL의 버전이 동일한 환경에서라면 가능합니다. 물론 그 이전 버전의 OS나 IDL인 경우에는 그 가능 여부는 말그대로 실행해봐야알 수 있을 가능성이 큽니다. 즉 실행 가능 여부가 보장이 안된다는 의미입니다.


따라서 나와 유사한 환경에서 작업을 하는 동료들끼리 정도의 범위라면 그냥 .sav 파일의 형태로 배포해도 될 수도 있지만, 다양한 환경에 있는 불특정 다수의 유저들을 대상으로 한 배포를 염두에 둘 경우에는 .sav 파일만으로는 충분하지 않게 됩니다. 더군다나 IDL을 전혀 사용하지 않는 사람들에게도 배포를 하고 싶다면 더더욱 그렇습니다. 사실 아주 예전(7.0 버전 이전)에는 이를 위한 해결책이존재하지 않았었습니다. 하지만 최근 버전의 IDL에서는 해결책을 제공하고 있는데 그것이 바로 MAKE_RT 명령입니다. 바로 이어질 후속 게시물에서 이 MAKE_RT 명령을 사용하여 배포용 패키지를 만드는 방법을 알아보겠습니다. See you soon!

LIST