2011-04-25 2 views
4

Windows 7, Mac OS X (및 Linux)에서 모두 실행되는 프로그램을 작성하려면 어떻게해야합니까?크로스 플랫폼 프로그램 작성

Qt는 크로스 플랫폼 GUI를 구축하기위한 훌륭한 프레임 워크라고 들었지만 모든 프로그램 버전마다 재 컴파일이 필요하다고 생각합니까? 그리고 Windows에서 win 버전을 컴파일해야합니까? Mac OS X에서 Mac 버전을, Linux에서 Linux 버전을 컴파일해야합니까?

나는 아이디어 및/또는 제안

+0

비슷한 질문이 있습니다. http://stackoverflow.com/questions/5759487/cross-platform-windows-os-x-development-with-large-existing-code-base/5759702#comment-6595156 – nathan

답변

5

당신이 당신의 프로그램을 다시 컴파일해야합니다 (않는 자바 나 플래시 등) 가상 머신을 사용하지 않는, 그래서 기본 바이너리 형식, 각 플랫폼에 차이가납니다 각 플랫폼에서.

일부 컴파일러 (GCC와 같은)는 크로스 컴파일을 허용하지만 설정하는 것은 쉽지 않습니다. 아마도 크로스 컴파일 할 수있는 가장 쉬운 시스템은 Linux입니다 (Linux에서 Windows로 크로스 컴파일을 설정 한 몇 가지 오픈 소스 프로젝트가 있습니다).

GUI 응용 프로그램의 경우 언어에 따라 달라집니다. C++에 익숙하다면 Qt 또는 wxWindows가 기본 윈도우 시스템보다 추상화 레이어를 제공하는 합리적인 선택 일 수 있습니다.

자바로 갈 수 있다면 인생을 더 단순하게 만들 수 있지만 윈도우 시스템은 자바가 아닌 네이티브입니다.

또 다른 언어로는 FreePascal w/Lazarus가 있습니다. 모든 플랫폼 (Windows의 WinAPI, OSX의 Cocoa 및 Linux의 GTK)에서 기본 윈도우 시스템으로 컴파일하는 꽤 좋은 GUI 디자이너가 있습니다. 자바는 윈도우, OS X 및 Linux에서 실행

+0

어쨌든 컴파일 중입니다. Qt 응용 프로그램이 모든 OS에서 제대로 작동하지 않습니까? 난 그냥 소스 (아마) 재사 용할 수 있지만 다른 exe/dmg/etc ... 필요합니까? –

+3

wxWidgets를 던지기위한 것 외에도 하나. – nathan

+1

@Paul, 예, 모든 OS에 대해 다시 컴파일해야합니다. –

1

+0

나는 그저 맘에 들지 않지만 그 대답은 참으로 좋은 대답입니다. –

2

예, C++를 사용하는 경우 각 버전에 대해 컴파일 할 필요가있다.

예를 들어 Mac에서 Windows 용으로 프로그램을 컴파일하지 못하게하는 유일한 방법은이를 수행하는 도구를 얻는 것입니다. 가능하지만 문제는 툴셋을 찾는 것입니다.

또한 가상 머신을 사용하여 다른 OS를 실행하고 동일한 시스템에서 모든 플랫폼의 코드를 컴파일 할 수 있습니다.

3

C++가 필수 요소인지는 확실치 않지만 Adobe Air는 데스크톱을위한 훌륭한 크로스 플랫폼 개발 환경이며 모바일 개발을위한 확장 영역이기도합니다. Adobe Air를 사용하여 여러 데스크탑 OS에 배포하는 데 필요한 예제가 필요한 경우 트윗 덱을 확인하십시오. http://www.tweetdeck.com/

해당 경로로 이동하면 Flex 및 Flash Builder를 살펴 보는 것이 좋습니다.

+0

감사합니다. –

3

크로스 플랫폼 프로그램을 작성할 때 강조해야 할 두 가지 개별적인 문제 - 코드를 이식성있게 만드는 방법과 다양한 플랫폼에서 빌드하는 방법을 설명합니다.

빌드 측면에서 볼 때, CMake (http://www.cmake.org)와 같은 크로스 플랫폼 빌드 시스템을 살펴볼 것입니다. 근본적으로 스크립트를 작성하고 CMake는 특정 플랫폼을위한 적절한 프로젝트 파일/makefile을 생성합니다. 평소처럼 각 플랫폼에서 프로그램을 빌드하십시오. 예를 들어, Windows에서 CMake를 사용하여 Visual C++ 프로젝트를 생성 한 다음 Visual C++를 사용하여 실제로 실행 파일을 빌드 할 수 있습니다. Linux에서는 CMake를 사용하여 makefile을 생성 한 다음 g ++를 사용하여 실행 파일을 빌드 할 수 있습니다.

다른 측면은 코드를 이식성있게 만드는 방법입니다. 핵심은 C++ 표준을 준수하는 코드를 작성하고 관심있는 플랫폼에서 이식 가능한 라이브러리를 사용하는 것입니다. 서로 다른 플랫폼 각각에 대해 플랫폼 별 코드를 작성해야합니다. 그렇게 할 경우, 이식 가능한 인터페이스 뒤에 숨기고 나머지 코드는이를 사용하도록해야합니다.

+0

감사합니다, cmake는 좋은 것처럼 보입니다. 또한 모든 플랫폼의 표준 코드로 프로그래밍하는 것이 어렵다면 나는 C가 좋은 방법이거나 C++ 일 것이라고 생각한다. (Win32와 MacOSX에서 지원된다.) –