Developing Cross-Platform UNIX Applications with Mac OS X

OSXDEV

Jump to: navigation, 찾기

MacOS X의 기반이 UNIX이기 때문에 맥에서 개발하거나 다른 UNIX용으로 포팅을 하는것이 대단히 쉽습니다. 바로 이런 cross platform상으로의 개발이 쉽다는 것이 Mac OS X의 큰 강점입니다. 이 문서에서는 MacOS X상에서 프로그래밍하는 데 쓸 수 있는 도구를 열거하여, 그런 도구를 이용해서 만든 코드를 다른 UNIX 플랫폼에 쉽게 이식하는 데 도움을 주려 합니다. 또한 이런식의 다기종을 위한 개발을 하기전에 알아 두어야 할 몇가지 사항에 대해서도 언급을 하겠습니다.

목차

[편집] Overview

단 하나의 플랫폼만을 고려해도 되는 세상에 살고 있다면 별 걱정이 없을 겁니다. 한 플랫폼에서 개발하고, 거기서 테스트하고, 거기서 프로그램을 사용하게 된다면 얼마나 편하겠습니까? 근데 어떤 개발자들은 그런 식으로 하고자 할 수 있지만, 상당수의 많은 개발자들은 그러하지 못합니다. 만약에 Linux나 Solaris 기반의 서버에서 프로그램을 운용할 것이리면, 개발 환경으로써 Mac을 선택하는 것은 참 좋습니다. 왜냐하면 다양한 크로스 플랫폼 개발 옵션이 있기 때문입니다.

자 우선 Mac OS X를 좋은 개발 플랫폼으로 만드는 몇가지 사항에 대해서 알아봅시다. Unix command line( top과 전형적인 man 페이지가 나와 있는 Figure 1을 참고 바랍니다.), 오픈 소스 소프트웨어의 강력함과 상호 운용성(interoperability), Apple이 제공하는 강력한 도구, 그리고 configure를 마음대로 할 수 있는 자유로움과 여러분 마음대로 주무를 수 있는 시스템이 그런 것들입니다. GCC, Perl, Python, Ruby 그리고 Java의 조합은 여러분이 생각할 수 있는 거의 대부분의 개발 기반을 제공합니다. MacOS X의 기반이 되는 UNIX의 깊이와 그 성숙도는 Linux나 Solaris와 같은 다른 많은 플랫폼이 공유하는 많은 수의 도구와 함께 크로스 플랫폼 프로그램을 만들 수 있는 다양한 도구 상자를 제공한다라고 생각하시면 될 것입니다. 이런 도구들 중에서는 Windows에서 사용 가능한 것도 있습니다.

그림:a_unix_Developing_Cross-Platform_Terminals.jpg
Figure 1: 친숙한 Mac 데스크탑에서의 터미널과 UNIX 커맨드 라인

크로스 플랫폼 개발은 Mac 환경에서 매일마다 행해지고 있습니다. 여러분이 사용하고 계시는, 그리고 MacOS X, Linux, 그리고 Solaris와 함께 제공되는 많은 오픈 소스 프로젝트들이 PowerBook 이나 iBook을 사용하는 개발자들에 의해서 개발되고 있습니다. 예를들어 새로 나올 Perl 6버젼을 포함한 Perl 개발자들의 상당수가 Mac을 사용하고 있습니다. 만약 하드코어 UNIX 해커들의 요새인 O'Reilly Open Source Convention에 가시면 도처에 PowerBook들이 널려 있는 것을 보실 수 있을 겁니다.

이런 경향이 생기는데는 그 이유가 뚜렷하게 있습니다. MacOS X가 좋은 개발 플랫폼일 뿐 아니라, 회사들이 사용하는 주된 개발 도구를 Mac에서 사용할 수 있기 때문입니다. Microsoft Office나 Adobe Creative Suite, Quark XPress, 그리고 QuickBooks Pro와 같은 프로그램들 그런 예입니다. MacOS X를 사용함으로써 많은 개발자들이 Windows와 Linux 시스템을 듀얼 부팅 시스템으로 운영할 필요가 없다고 깨닫게 되었습니다. 즉 일반적인 데스크탑 용도로써 사용하는데 필요 이상으로 두개의 OS를 운용해야 한다는 비효율성을 없앨 수 있다는 말이기도 합니다.

여러 플랫폼에서 잘 돌아가는 프로그램을 어떻게 개발할 수 있냐구요? 음.. 미리 잘 계획을 한다면 그건 그다지 어려운 일이 아닙니다. 자 이제 곧 그렇게 하는 세가지의 다른 방법을 설명드릴겁니다. 첫째로 세가지 다른 다이나믹 랭귀지를 살펴볼 것입니다. 즉 Perl, Python 그리고 Ruby가 그것입니다. 그런 후에 Java를 살펴볼 것입니다. 마지막으로 크로스 플랫폼 개발을 위해서 C/C++을 어떻게 세팅할 것인지 알아보겠습니다.

[편집] Perl, Python이나 Ruby 사용하기

처음엔 살작꿍 시작을 했지만, 이 세 스크립트 언어는 굉장히 강력한 응용 프로그램 개발 플랫폼이 되었습니다. 시스템 관리를 할 목적의 스크립트를 작성하기 위해서 뿐만이 아니라 좀 복잡한 응용 프로그램의 개발을 위해서도 이 세 언어는 사용되고 있습니다. 특히 서버 사이드에선 더욱 그러합니다. 예를 들자면 Moveable Type Publishing Platform은 Perl로 만들어 졌으며 Mailman Mailing List Manager는 Python으로 작성이 되었습니다.

이 세 언어를 사용할 때의 최고의 장점이 무엇인지 아십니까? 바로 Linux나 MacOS X에서 모두 잘 돌아간다는 것입니다. 여러분이 하실 일은 그저 그것을 사용할 플랫폼을 고르고, 코드를 검사해 보고, 필요하다면 여러분의 프로젝트를 위해서 세팅을 좀 바꾸는 것일 뿐입니다. 그리고 실행하면 됩니다. 단 하나 신경을 써 주어야 할 것은 그 여러 언어의 인터프리터가 어디에 있는지 그 장소와 사용하는 시스템에 설치된 모듈이 있는 디렉토리가 플랫폼마다 다를 수 있다는 것입니다.

인터프리터의 위치가 다를 수 있기 때문에, 즉 예를 들자면 /usr/bin/python or /usr/local/bin/python 처럼 시스템마다 그 위치가 다를 수 있는데, 그럴 경우 env라는 명령어를 사용해서 그 위치를 찾고, 사용하고자 하는 인터프리터를 "shebang" 라인에 다음과 같이 넣으면 됩니다,

#!/usr/bin/env python

print "Hello!"

Perl Modules
근래까지 Perl에 모듈을 추가하는 가장 쉬운 방법은 CPAN을 사용하는 것입니다, CPAN은 the Comprehensive Perl Archive Network의 약자입니다. 그것은 Perl 모듈을 설치하고 최신의 버젼을 유지하는 각가자 자잘한 작업을 자동으로 다 해주기 때문에 편합니다. CPAN을 사용하려면 cpan 커맨드 라인 툴을 Terminal에서 입력하면 됩니다.

$ cpan
cpan shell -- CPAN exploration and modules installation (v1.76)
cpan>

만약 어떤 이유로 여러분이 사용하고자 하는 모듈이 CPAN에 없으면, 그게 Perl의 include path에 있는지만 확인하시면 됩니다. 현재 여러분이 사용하고 계시는 플랫폼에 Perl의 설치되어 있는 path를 알아내려면 쉘에서 다음의 명령어를 치면 됩니다.

$ perl -le 'print for @INC'
/System/Library/Perl/5.8.1/darwin-thread-multi-2level
/System/Library/Perl/5.8.1
/Library/Perl/5.8.1/darwin-thread-multi-2level
/Library/Perl/5.8.1
/Library/Perl
/Network/Library/Perl/5.8.1/darwin-thread-multi-2level
/Network/Library/Perl/5.8.1
/Network/Library/Perl
.

Mac OS X 10.3에서 그 명령어를 수행했을때 위와 같은 결과가 나온다는 점을 염두에 두십시오. 여러분은 모듈을 위의 어떤 디렉토리에건 넣을 수 있습니다. 하지만 대부분의 경우에 /Library/Perl/5.8.1을 사용하게 될 것입니다.

위의 명령어는 어떤 플랫폼에서건 그 라이브러리 path를 알아내기 위해서 쓸 수 있습니다. 예를 들자면 FreeBSD 시스템에서 사용하면 다음과 같이 나올 것입니다.

$ perl -le 'print for @INC'
/usr/local/lib/perl5/5.8.3/i386-freebsd
/usr/local/lib/perl5/5.8.3
/usr/local/lib/perl5/site_perl/5.8.3/i386-freebsd
/usr/local/lib/perl5/site_perl/5.8.3
/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd
/usr/local/lib/perl5/site_perl/5.8.0
/usr/local/lib/perl5/site_perl/5.6.1
/usr/local/lib/perl5/site_perl/5.005
/usr/local/lib/perl5/site_perl
.

Python Modules
Mac OS X에서 Python을 설치하는 것은 Perl의 경우와는 좀 다릅니다. Python 모듈을 위해서 사용되는 디렉토리가 /Library 계층 구조 내에 없습니다. 대신에 기본 Python 모듈 path는 /System/Library/Frameworks/Python.framework/Versions/2.3 디렉토리에 있습니다. 설치된 Phyton module이 위치한 path를 보시려면 Python 쉘을 여시고 sys.path값을 다음에서 보이는 바와 같이 출력하십시오.

$ python
Python 2.3 (#1, Sep 13 2003, 00:49:11) 
[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', '/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python23.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages']

/System 디렉토리에 있는 것을 보통 바꾸길 원하지 않기 때문에 이것은 좀 몇가지 문제를 일으킬 수 있습니다. 더 좋은 방법이 있는데, 그것은 모듈을 /Library/Python/2.3/site-packages 디렉토리에 넣기 위해 PYTHONPATH 환경 변수를 사용하는 것입니다.예를 들자면 다음의 줄들을 .bash_profile에 넣어 놓을 수 있습니다.

export PYTHONPATH=/Library/Python2.3/site-packages

다른 환경에서 Python 모듈이 있는 path를 확인하시려면, 똑같은 명령어를 치면 됩니다. 다음엔 FreeBSD 시스템에서의 예가 나와 잇습니다.

$ python
Python 2.3.3 (#1, Apr 13 2004, 07:09:05) 
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', 
'/usr/local/lib/python23.zip', 
'/usr/local/lib/python2.3', 
'/usr/local/lib/python2.3/plat-freebsd4', 
'/usr/local/lib/python2.3/lib-tk', 
'/usr/local/lib/python2.3/lib-dynload', 
'/usr/local/lib/python2.3/site-packages']

Ruby Modules
Ruby 모듈의 경우는 Perl과 Python의 중간쯤에 해당합니다. Terminal에서 다음 명령을 이용하면 모듈의 path를 쉽게 알아낼 수 있습니다.

$ ruby -e 'puts $LOAD_PATH'
/usr/local/lib/ruby/site_ruby/1.6
/usr/local/lib/ruby/site_ruby/1.6/powerpc-darwin7.0
/usr/local/lib/ruby/site_ruby
/usr/lib/ruby/1.6
/usr/lib/ruby/1.6/powerpc-darwin7.0
.

대부분 /usr/local/lib/ruby/site_ruby 디렉토리에 모듈을 넣어야 합니다. 이 디렉토리는 시스템에 기본적으로 존재하지는 않습니다. 그러므로 여러분이 직접 만드셔야 합니다. 물론 Ruby가 설치된 시스템에서 모두 같은 명령을 사용하시면 됩니다. 예는 여기서 생략하겠습니다.

CPAN과 비슷한 기능을 갖는 것을 Ruby용으로 만드려고 하는 프로젝트가 있는데 RubyGems라고 부릅니다. RubyGems 웹사이트에 가시면 더 자세히 알 수가 있습니다.

Keep On the Cutting Edge
Mac OS X에 Perl, Pyton, 그리고 Ruby가 설치된 것은 상대적으로 최근의 일이고 보통 OS에 주된 업데이트가 이루어질 때, 최신 버젼이 깔리기도 합니다. 하지만 가장 최신의 버젼에서만 사용가능한 그런 기능을 원하신다면, 즉 좀 위험하게 사시고 싶으시다면, 언제든지 여러분의 버젼을 build할 수 잇습니다. 이 세 언어는 모두 Unix를 사용하는 프로그래머라면 다 알만한 configure; make; make install 명령어를 사용합니다.

직접 빌드할 경우 /usr/local 디렉토리에 설치하신다면 Apple에서 나오는 소프트웨어 업데이트를 적용할 때, 여러분이 직접 설치한 것이 덥어써지거나 할 염려가 없습니다. 이렇게 하고 싶으시면 configure를 하실때 --prefix 옵션을 다음과 같이 사용하시면 됩니다.

$ ./configure --prefix=/usr/local

Xcode 사용하기
음.. 처음엔 모르셨겠지만 Xcode는 Perl, Ruby 그리고 Python 파일들을 이해하며 키워드나 스트링을 칼라로 마크해 주며, 들여쓰기 기능이나 심볼이 팝업되는 그런 기능을 다 지원합니다. 그저 그 세 언어로 만들어진 파일을 Xcode에서 Figure 2에서 보이듯이 열어주기만 하면 됩니다.

그림:a_unix_Developing_Cross-Platform_Xcodepy.gif
Figure 2: Xcode에서 Python 파일 에디팅하기

물론 Xcode에서 빈 프로젝트를 만들고 Perl, Python 혹은 Ruby 화일의 그룹을 추가해도 됩니다. 그러면 필요에 따라서 그때 그때 그것들을 전환 할 수 있습니다.

[편집] Java 사용하기

Java는 수많은 회사에서 기업 수준의 프로그램을 만드는 주요 언어로 성장을 했습니다. Write Once, Run Anywhere라는 모토는 Mac OS X에서의 Java에 확실히 반영이 되었습니다. Mac OS X에서의 Java와 다른 플랫폼에서의 Java의 차이점은 Java runtime이 어디에 있느냐와 모든 Mac OS X 시스템은 JDK를 모든 구성 요소를 다 인스톨한 채 출하된다는 점입니다.

Java 개발자들이 흔히 보게되는 Java 디렉토리 모습은 /Library/Java/Home 폴더 밑에서 볼 수있습니다. 많은 Java 기반의 도구나 유틸리티들은 그 디렉토리가 어디에 있는지 알아야 합니다. 그렇게 하기 위해선 JAVA_HOME 환경 변수를 세팅해 주면 됩니다. 이 세팅을 계속 사용하고 싶으시면 다음에 보이는 바와 같이 .bash_rc 화일에 넣어 놓으면 편할 겁니다.

export JAVA_HOME=/Library/Java/Home

마지막으로 하나 짚고 넘어가고 싶은게 있습니다. 이전 버젼의 Mac OS X에서는 시스템에 한번에 단 한개의 Java VM만이 존재할 수 있었습니다. Java 1.4.1 버젼부터는 한 머신에 두개의 다른 Java 버젼을 설치할 수 있습니다. 물론 위에서 보이는 것처럼 환경 변수를 이용해서 가장 최신이거나 사용하기 가장 적절한 버젼을 사용할 수 있습니다. 더 자세하게 알고 싶으시면 Java 1.4.1 Release Notes를 참조하십시오.

Extensions와 JNI libraries
JINI 라이브러리나 JAR 화일을 추가하고 싶으시다면 몇가지 하는 방법이 있습니다. 우선 Apple은 /Library/Java/Extensions 디렉토리에 그 화일들을 넣기를 권장합니다. 그렇게 함으로써 시스템에 있는 모든 사용자들이 사용할 수 있게 됩니다. 만약 어떤 한 사용자만 사용하게 하고 싶으면, 그 사용자의 홈 디렉토리에 있는 ~/Library/Java/Extensions 디렉토리에 넣으십시오.

그렇지 않다면 다운로드 받거나 설치하거나 어떤 것을 세팅할 필요가 전혀 없습니다. 그저 동작합니다. 더우기 Mac OS X에서 개발된 자바 프로그램은 자동으로 멀티 프로세서 하드웨어의 지원을 받을 수 있고, Java Accessibility API에 대한 시스템의 native support를 받을 수 있으며, Aqua의 Look&Feel이나 객체지향 Cocoa 프레임워크를 사용할 수 있습니다. 이말은 결국 Java 프로그램이 Mac OS X의 native 프로그램과 같은 모양을 가지면서 같은 식으로 동작하게 된다는 것을 말합니다.

[편집] C나 C++ 사용하기

C/C++를 사용해서 프로그램을 개발하는 것은 좀더 세심한 주의가 필요합니다. C/C++ 프로그램은 시스템에서 제공하는 라이브러리 파일들과 같이 컴파일이 되기 때문에, Java, Perl, Python 혹은 Ruby처럼 플러그&플레이 스타일로 되질 않습니다. 하지만 여전히 관리할 수 있습니다. 실제로 GCC (GNU compiler collection)을 사용하는 Mac OS X의 성격때문에 벌써 그럴 여건을 충분히 가지고 있습니다.

Autoconf
여러분에게 부담이 되는 한가지는 여러 플랫폼에서 빌드 되는 그런 식의 소스 트리를 유지하도록 하는 것입니다. 예전엔 커스터마이즈된 도구를 아주 많이 만들어야 하는 것을 말했는데, 지난 몇년동안 많은 도구들이 크로스 플랫폼 코드를 만들기에 편하도록 발전이 되었습니다. 이런 툴들로는 autoconf, automake,그리고 libtool 도구 들이 있으며, 이것들을 이용해서 configure; make; make install 과 같은 전형적인 UNiX 빌드에 사용되는 명령을 사용할 수 있습니다.

autoconf는 여러분의 소스코드가 컴파일 될 환경이나 그것의 특성이 어떤게 있는지 알아볼 수 있게 합니다. automake는 UNIX 크로스 플랫폼 개발 세계에서 사용되는 수 많은 표준에 맞도록 하고, 소프트웨어 패키지를 서술하는 과정을 간략화 하는 그런 Makefile을 만들 수 있게 합니다. libtool 도구는 static이나 shared library를 만들 수 있게 하는 GCC 툴체인에 대한 인터페이스입니다.

configure에 의해서 만들어지는 중요한 파일은 config.h화일이 있습니다. 이 파일은 일련의 #define 프리프로세서 디렉티브를 가지고 있습니다. 이것은 플랫폼간이 상이한 사항에 대해서 여러분의 코드가 적절히 대응할 수 있도록하는데 사용할 수있습니다. 여러분이 소스파일은 이제 config.h를 import할 수 있습니다. 여기 Neon WebDAV 라이브러리에서 가져온 예가 있습니다.

#include <config.h>
...
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
...
void ne_sock_exit(void)
{
#ifdef WIN32
    WSACleanup();
#endif
    init_result = 0;
}

만약 전체 예를 보고 싶으면, 관심있는 오픈 소스 프로젝트의 파일을 다운로드 받으신 후에, configure를 실행한 후, 생성되는 config.h 파일을 살펴 보시기 바랍니다. 해당 오픈 소스 프로젝트의 파일 들이 그것을 사용합니다.

그런 툴을 어떻게 사용하는지 세심하게 알고 싶으시면 GNU Autoconf, Automake, and Libtool 라는 서적을 읽어 보시기 바랍니다. 그것은 인터넷에서 온라인으로도 제공되며 책으로 살 수도 있습니다.

Use Explicit Data Types
한 플랫폼만을 위해서 코드를 만들고 있다면 sizeof(int) == sizeof(void *) == 4 bytes로 가정하고 비트 필드가 언제나 little-endian이나 big-endian 중 어떤 하나라고 가정하게 될 것입니다. 하지만 멀티 플랫폼을 염두에 만들고 있다면 그런 가정을 하지 마십시오. 포인터를 포인터로 다루고 중요한 정수들이나 외부에 저장되는 bitfield에 대한 매크로들에 대해서는 그 크기를 명시하십시오.

Pathnames
Mac OS X는 몇개의 비전통적인 표현을 사용합니다. 예를들어 /usr/lib에 시스템 라이브러리를 넣는 대신 /System/Library/Frameworks에 넣는 것입니다. 보통 GCC가 이런 것을 대개 자동으로 처리해 주지만 수동으로 pathname을 넣으면 이런 것은 쉽게 깨집니다. 그런 의존성을 피하기 위하려면 Makefile macro나 symlink를 사용하십시오.

또 pathname에 스페이스가 있는 것을 볼 수 있습니다. 대가 다른 UNIX 기반의 시스템에서는 path에 스페이스가 들어가지 않습니다. 또한 HFS+와 UFS의 차이점에 대해서도 주의할 필요가 잇습니다. HFS+를 쓰면 foo.c, Foo.C와 FoO.c를 같은 디렉토리에 생성할 수 없습니다. 하지만 UFS를 쓰면 할 수 있습니다. 만약 이런 식의 대소문자를 다른 것으로 처리하는 문제가 여러분에게 중요한 이슈라면 UFS 파티션이나 디스크 이미지를 만드시고 그 위에서 여러분의 소스코드를 만드시기 바랍니다.

Using Xcode
autoconf, automake그리고 libtool을 쓰게 될때 꼭 Xcode를 포기해야 할 필요가 있는것은 아닙니다. 그런 것을 사용하는 프로젝트를 Xcode를 이용해서 작업하고 싶으시면, New Project Assistant에서 GNU Make 타켓 형태의 빈 프로젝트를 만드십시오. 일단 그 프로젝트를 만들었으면, 소스를 추가할 수 있습니다. Build 버튼을 눌렀을때, Xcode는 그 프로젝트의 makefile을 이용해서 빌드를 할 것입니다. 예를 들면 Figure 3는 Ruby를 빌드하기 위해 세팅된 프로젝트를 보여줍니다.

그림:a_unix_Developing_Cross-Platform_Xcoderuby.jpg
Figure 3: Makefile 기반의 프로젝트를 Xcode에서 사용하기

이와 같이 하려면 다음의 과정을 거쳐서 하시면 됩니다.

  1. Ruby download page에서 Ruby 배포판을 다운로드하시기 바랍니다.
  2. 필요하면 그 배포판을 푸십시오. Safari를 이용해서 다운 받았으면 데스크탑에 다운로드가 된 후 압축이 풀릴 것입니다.
  3. Terminal 윈도우를 열고 Ruby 배포판의 디렉토리로 들어 가십시오 그리고 configure script를 수행하십시오.
  4. Xcode를 열고 GNU Make 형태의 프로젝트를 만드십시오. 그것을 Ruby 배포판의 디렉토리에 저장하십시오.
  5. Ruby 소스를 Project > Add to Project 메뉴를 이용해서 그 프로젝트에 추가시키십시오.
  6. Build > Build 메뉴나 Command-B를 이용해서 빌드하십시오.

Using Xcode with Remote Sources
경우에 따라서 Mac OS X에서 빌드할 수 없는 프로젝트가 있을 수 있습니다. 하지만 여전히 여러분이 가지고 계신 PowerBook과 Xcode를 사용할 수 있습니다. 놀랍게 들릴 수도 있지만, 프로젝트를 빌드하게 될 컴퓨터가 네트워크에 붙어 있고, 네트워크로 억세스할 수 있는 파일 시스템을 사용하고 있으며 SSH를 사용하고 있으면, 빌드는 그 시스템에서 하고 Mac에서 Xcode를 이용해서 컨트롤 할 수 있습니다. 다음에 하는 방법이 나와 있습니다.

  1. 그 코드가 있는 파일 시스템을 NFS나 SMB를 이용해서 Mac에 마운트 하십시오.
  2. Xcode를 열고 GNU Make 형태의 프로젝트를 만드십시오.
  3. 소스 코드를 프로젝트에 추가하십시오.
  4. Makefile 타겟을 Figure 4에서 보이는 것처럼 make 명령어를 수행 할 수 있도록 SSH를 이용하도록 세팅하십시오, 하는 방법은 ssh에 대한 argument를 다음의 패턴으로 세팅하는 것입니다.
    user@hostname make $(ACTION) -C sourcedir.

    The -C argument make는 수행전에 지정한 디렉토리로 cd를 해서 들어가기 위한 것입니다.
  5. SSH keys를 Mac과 빌드하게 되는 리모트 시스템에 세팅하고 SSH Keychain같은 유틸리티를 이용해서 그 키 값들을 관리하십시오.

그림:a_unix_Developing_Cross-Platform_Remotemake.jpg
Figure 4: 원격 빌드(remote build)를 위한 세팅하기.

일단 세팅이 끝나고서 해당 프로젝트를 빌드하면 ssh를 Xcode가 수행하고 빌드가 끝난 실행화일은 실행이 될 것입니다. 결과는 Build Result 윈도우에 나타날 테고, 빌드 에러와 각종 경고는 Figure 5에서 보이듯이 나타나게 됩니다.

그림:a_unix_Developing_Cross-Platform_Remotebuild.jpg
Figure 5:원격 빌드의 결과

[편집] 결과

한 플랫폼만 걱정할 필요가 있는 그런 세상에서 살 수는 없지만, 적어도 여러 플랫폼용으로 프로그램을 만들기 위한 여러가지 언어와 도구가 있습니다. 그리고 그런 모든 주된 언어와 개발 도구들을 Mac에서 사용할 수가 있습니다.

[편집] For More Information


번역자 사용자:JongAm
원본문서링크 (Last Updated - ')