* 이 내용은 앞선 게시물에서 이어집니다.
앞서 생성했던 test_gui.sav 파일이 존재하는 상태에서 이제 MAKE_RT 명령을 사용하여 패키지 생성을 시도해보겠습니다. 예를 들기 위하여, OS가 윈도우즈10(당연히 64비트임)인 PC에 설치된 IDL 8.5에서 작업을 하는 중이며, 윈도우즈 64비트용 어플리케이션 패키지를 만드는 경우를 가정해보겠습니다. 이 경우 MAKE_RT 명령은 대략 다음과 같은 방식으로 실행하면 됩니다. 물론 이 명령을 실행할 때 IDL의 현재 디렉토리는 test_gui.sav 파일이 존재하는 디렉토리와 동일해야 합니다. 여기서는 이 디렉토리의 경로가 'C:\IDL'이라고 가정하겠습니다. 이와 같은 상황에서 MAKE_RT를 다음과 같이 실행해보면 그 결과는 다음과 같은 방식으로 나오게 됩니다.
IDL> make_rt, 'test_gui', 'C:/IDL', savefile='test_gui.sav', /vm, /overwrite, /win64
% Compiled module: MAKE_RT.
make_dist routine finished. See log file: C:\IDL\test_gui\log.txt
일단 현재 디렉토리의 내용을 확인해보면 test_gui라는 이름의 폴더가 새로 생성되어 있음을 알 수 있습니다. 이 폴더의 내용을 보면, test_gui.exe라는 파일이 가장 먼저 눈에 띕니다. 그 외 다른 파일들 및 폴더들도 존재하는데, 아마 IDL85라는 이름의 폴더도 보일 것입니다. 이 안에는 IDL 앱의 실행을 위한 최소한의 필수 파일들이 저장됩니다. 결국 이 test_gui라는 폴더 자체가 하나의 패키지라고 보면 됩니다. 따라서 다른 사람들에게 배포를 해야 할 경우 이 폴더를 그냥 주면 됩니다. 그러면 사용자는 이 폴더 안에 있는 실행파일인 test_gui.exe 파일을 더블 클릭하여 실행하면 됩니다. 물론 이 사용자의 PC에 IDL이 설치되어 있는가 여부는 전혀 상관이 없습니다. 다만 이 사용자의 PC의 OS는 당연히 윈도우즈 64비트여야 하겠지요. 윈도우즈의 경우 64비트 OS라면 윈10, 윈8.1 등이 모두 가능할텐데, 비트수만 맞는다면 큰 상관없이 앱을 돌릴 수 있을 것입니다.
그러면 여기서 우선 MAKE_RT 명령에서 사용된 인수 및 각종 키워드들을 살펴볼 필요가 있습니다. 첫번째 인수는 앱의 이름이고 두번째 인수는 디렉토리 경로입니다. 즉, 두번째 인수에서 명시된 디렉토리안에 첫번째 인수에서 명시된 이름의 하위 디렉토리가 생성되고 이 안에 파일들이 들어가게 됩니다. 여기서는 일관성을 위하여 첫번째 인수에 대하여 'test_gui'라는 이름을 부여했지만, 다른 이름으로 부여해도 상관이 없습니다. SAVEFILE 키워드에는 앞서 생성해놓은 .sav 파일의 이름을 부여하면 됩니다. VM 키워드는 반드시 사용하는 것이 좋습니다. 이 키워드를 사용하지 않으면 Runtime 기반으로 패키지를 생성하는데 이 경우 실행을 위해서는 별도의 라이센스가 필요하게 됩니다. 따라서 사용자가 별도의 Runtime 라이센스를 갖고 있지 않은 경우에도 앱을 사용할 수 있도록 하려면 이 VM 키워드를 반드시 사용하여 VM(Virtual Machine) 기반으로 앱이 돌아가도록 해줘야 합니다. OVERWRITE 키워드는 첫번째 인수에서 명시된 이름의 디렉토리안에 기존에 생성했던 파일들이 있을 경우에도 덮어쓰라는 의미입니다. 사용하는 것이 편할 것 같습니다.
그리고 마지막에 위치한 WIN64 키워드는 그 의미가 짐작 가능하리라 생각이 됩니다. 윈도우즈 64비트 OS에서 구동 가능한 앱 패키지로 만들라는 의미입니다. 이외에도 OS 관련 키워드들이 더 있습니다. 8.5 버전 현재 MAKE_RT에서 지원되는 OS 관련 키워드들의 목록은 다음과 같습니다. 각 키워드별로 어떤 OS에 해당되는가는 IDL 도움말을 참조하시기 바랍니다.
WIN64
WIN32
MACINT64
LIN64
LIN32
SUN64
SUNX86_64
이 OS 관련 키워드들의 사용에 있어서는 몇가지 유념해야 할 사항들이 있습니다. WIN64 키워드를 사용해서 만들어진 앱 패키지는 윈도우즈 64비트 모드에서의 사용을 위한 것입니다. 따라서 이러한 앱 패키지는 윈도우즈 32비트 모드에서는 구동이 보장되지 않습니다. 만약 윈도우즈 32비트 모드에서 구동 가능한 앱 패키지를 만들려면 방법은 두가지입니다. 첫번째 방법은 WIN32 키워드를 사용하여 32비트 윈도우즈용 패키지를 따로 만드는 방법입니다. 두번째 방법은 64비트와 32비트를 모두 지원하는 패키지로 만드는 방법인데, 이를 위해서는 MAKE_RT에서 WIN64, WIN32 키워드를 함께 사용하면 됩니다. 단 이러한 생성 작업은 당연히 윈도우즈 64비트용 IDL에서만 가능합니다. 윈도우즈 32비트용 IDL에서는 32비트 모드용 패키지 생성만 가능하기 때문입니다.
유사한 맥락에서 생각한다면 다른 OS의 경우도 패키지 생성 작업을 어떤 방식으로 해야 할 것인가가 어느 정도 짐작이 가능할 것 같습니다. Linux의 경우도 비슷한 방식으로 생각하면 됩니다. Mac OS X의 경우는 과거에는 32, 64비트가 공존했었지만 최근에 등장한 El Capitan이나 Yosemite 등은 64비트 모드만 지원됩니다. 이러한 OS별 특수성들을 염두에 둘 필요가 있습니다. 다음은 위와 유사한 작업을 El Capitan에서 실행하는 예제입니다.
IDL> make_rt, 'test_gui', '/Users/LSW/Documents/IDL', savefile='test_gui.sav', /vm, /overwrite, /macint64
% Compiled module: MAKE_RT.
make_dist routine finished. See log file: /Users/LSW/Documents/IDL/test_gui/log.txt
그런데 여기서 또 주의해야 할 점이 있습니다. 윈도우즈에서 구동 가능한 패키지의 생성은 Mac OS용 IDL에서는 불가능합니다. 그 반대의 경우도 마찬가지입니다. 즉 OS를 넘나드는 방식의 패키지 생성은 기본적으로 불가능하다고 보시면 됩니다. 따라서 어떤 앱 패키지를 배포하는데 있어서 윈도우즈 및 Mac OS 사용자들을 모두 대상으로 하고 싶다면, 개발자는 패키지의 생성 작업을 윈도우즈용 IDL 및 Mac OS용 IDL에서 모두 해야 합니다. 하나의 OS에서 다른 OS용 패키지를 생성하는 것은 불가능하다고 보면 됩니다. 그 이유는 앞서 생성했던 패키지 디렉토리(test_gui) 안에 있는 IDL85/bin 디렉토리안의 내용을 보면 아마도 이해가 쉬울 것 같습니다. 앞서 윈도우즈 64, 32비트 둘 다 지원되도록 생성했던 패키지 디렉토리의 내용을보면 다음과 같습니다.
그리고 여기서 IDL85/bin 디렉토리의 내용을 보면 다음과 같습니다.
만약 윈도우즈 64비트 전용 또는 32비트 전용 패키지일 경우는 위에서 보이는 하위 디렉토리들 중 해당되는 것 하나만 존재하게 됩니다. 그리고 Mac OS나 Linux 등과 같은 다른 OS의 경우라면 그 구성이 또 다를 수 밖에 없습니다. 따라서 이러한 파일들은 결국 해당 OS용 IDL의 설치 디렉토리에만 존재하기 때문이다 정도로 이해하시면 될 것 같습니다.
일단 이 정도면 MAKE_RT 명령의 사용법 및 유의 사항들을 충분히 설명한 것 같습니다. 더 세부적인 내용에 관해서는 IDL 도움말에서 MAKE_RT에 관한 부분을 참조하시기 바랍니다.
'IDL > Widget' 카테고리의 다른 글
IDL에서 GUI 프로그래밍을 해보고자 한다면? (내용 업데이트) (0) | 2018.08.13 |
---|---|
IDL App 실행파일 및 배포용 패키지 만들기 [1] (0) | 2016.06.20 |
두 개의 그래픽창을 갖는 GUI 만들어보기 (0) | 2013.01.30 |
Widget Programming 예제 (0) | 2011.11.10 |