Windows에서 Objective-C 통합 개발 환경(IDE) 구축

(zhuang) Windows에서 Objective-C 통합 개발 환경(IDE) 구축
 
2014-04-04에 출시된 Pitaya 소프트웨어
 

Windows 환경에서 Objective-C 통합개발환경(IDE) 구축 (1)

Objective-C는 Apple 소프트웨어의 프로그래밍 언어로, 컴퓨터에서 배우고 디버깅하려면 통합 개발 환경(IDE)이 있는 것이 훨씬 편리합니다. Objective-C용 통합 개발 환경을 구축하는 방법에는 세 가지 유형이 있습니다.

1. Apple의 플랫폼을 사용하여 통합 개발 환경은 Xcode를 사용합니다. 하지만 Apple 플랫폼이 없고 Windows 환경에서 Objective-C를 배우고 싶다면 다음 두 가지 방법을 사용할 수 있습니다.

2. Windows 환경에서 Apple 가상 머신을 설정하지만 이것은 개인용 컴퓨터에서 고성능을 요구하며 모든 개인용 컴퓨터가 할 수 있는 것은 아니며 가상 머신의 실행 속도도 상대적으로 느립니다.

3. Codeblocks IDE 개발 환경을 사용하여 구성하고 Object-C의 컴파일, 디버깅 및 운영을 지원하는 통합 개발 환경을 구축합니다. 이 방법은 개인용 컴퓨터의 성능에 대한 요구 사항이 거의 없고 빠르게 구축할 수 있는 방법입니다.

1. Object-C 컴파일러 설치

Objective-C용 컴파일러는 많습니다. 이 기사에서는 GnuStep의 사용을 소개합니다. URL은 http://www.gnustep.org/experience/Windows.html입니다. 여기에서 gcc 컴파일러의 Windows 버전을 다운로드할 수 있습니다.

다운로드 페이지로 이동하여 위의 세 가지 소프트웨어 패키지를 다운로드하고 예를 들어 D:\GNUstep에 설치합니다. 이 세 가지 소프트웨어 패키지의 기능에 대해서는 온라인에서 확인할 수 있으므로 여기서 반복하지 않겠습니다.

2. Objective-C 통합개발환경 설치

Objective-C용 통합 개발 환경으로 CodeBlocks IDE를 사용하기로 선택했습니다. 다운로드 주소는 http://www.codeblocks.org/입니다.

3. 개발환경 구성

Code 블록의 구성을 통해 단계별로 Objective-C 개발 환경 구축이 완료됩니다. CodeBlocks, 다음 화면을 볼 수 있습니다.

1단계: 컴파일러 구성

설정->컴파일러 및 디버거...로 이동하여 GNU GCC 컴파일러 컴파일러를 선택하고 "복사" 버튼을 누른 다음 이름을 "GNUstep MinGW 컴파일러"로 변경하고 저장합니다. 그림과 같이:

그런 다음 기타 옵션 탭을 입력하고 다음을 입력하십시오.

-fconstant-string-class=NSConstantString -std=c99 그림과 같이:

2단계: 링커 설정 링커 설정

그림과 같이 링크 라이브러리에 두 개의 파일을 추가합니다.

그것들은 D:\GNUstep\GNUstep\System\Library\Libraries 아래에 있습니다:

libgnustep-base.dll.a 
libobjc.dll.a

3단계: 검색 디렉토리 지정 검색 디렉토리(GNUstep이 사전 설치되어 있어야 함)

<!--[if !supportLists]-->1) <!--[endif]-->컴파일러(컴파일러)는 D:\GNUstep\GNUstep\System\Library\Headers로 설정됩니다.

2) 링커(커넥터)는 D:\GNUstep\GNUstep\System\Library\Libraries로 설정됩니다.

4단계: Objective-C 파일 유형 지원 추가

<!--[if !supportLists]--> 1) <!--[endif]-->설정->환경...으로 들어가 *.m을 추가할 파일 확장자 처리를 선택합니다. 그림과 같이:

2) Project->Project tree->Edit file types & category... 를 입력하고 소스 아래의 파일 유형 목록에 *.m을 추가합니다. 그림과 같이:

3) 进入 Settings->Editor...,选择 Syntax highlighting,点击“Filemasks....”按钮,在弹出框尾部添加*.m 到文件类型。如图:

4) 点击“Keywords...”按钮 (紧靠Filemasks...按钮) 添加下面Object-C的关键字到Edit Keywords列表中。如图。
@interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self @protocol

<!--[if !supportLists]-->4. <!--[endif]-->代码测试

上述开发环境配置完成后,就可以开始代码测试了。

首先,新建一个工程,选择File->New->Project…,会出现一个工程类型窗口,选择Console Application,然后按照工程建立指引,建立一个mytest的工程,并将main.c的文件更名为main.m,录入以下代码:

#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"%@",@"hello world");
    [pool drain];
    return 0;
}

如图:

之后再开始编译运行:Buid –> Run… 如果出现以下窗口,恭喜你,你已经成功的搭建了Windows下的Objective-C的集成开发环境。

如果顺利编译通过并运行,那么恭喜object-c的windows开发环境已经配置好了,如果你想了解并运行cocoa框架的话
还需要对codeblocks进行下一步配置。

Windows下的Objective-C集成开发环境(IDE)的搭建 (二)

继上一步Windows下的Objective-C集成开发环境(IDE)的搭建 (一)配置运行命令行程序后,今天来讲解一下如何使用
codeblocks配置开发使用cocoa framework开发GUI程序。

Java代码

#include "AppController.h"  
#include <AppKit/AppKit.h>  
  
int main(int argc, const char *argv[])  
{  
   NSAutoreleasePool *pool;  
   AppController *delegate;  
  
   pool = [[NSAutoreleasePool alloc] init];  
   delegate = [[AppController alloc] init];  
  
   [NSApplication sharedApplication];  
   [NSApp setDelegate: delegate];  
  
   RELEASE(pool);  
   return NSApplicationMain (argc, argv);  
}  

我们使用一个helloworld开始旅程。

这个helloworld程序共有五个文件:main.m、AppController.h、AppController.m、helloworldInfo.plist和GNUmakefile。图形界面的设计全部在代码中。

第一步:使用codeblocks新建一个c的console程序。这里命名该工程名为gui,如图所示:

添加一个main.c文件,将下面的代码拷贝并覆盖main.c中内容#include "AppController.h"

#include <AppKit/AppKit.h>  
  
int main(int argc, const char *argv[])  
{  
   NSAutoreleasePool *pool;  
   AppController *delegate;  
  
   pool = [[NSAutoreleasePool alloc] init];  
   delegate = [[AppController alloc] init];  
  
   [NSApplication sharedApplication];  
   [NSApp setDelegate: delegate];  
  
   RELEASE(pool);  
   return NSApplicationMain (argc, argv);  
}  

添加一个AppController.h 头文件,内容如下:

<span style="white-space: normal; background-color: #ffffff;">#ifndef _AppController_H_</span> 

#define _AppController_H_
#include <Foundation/NSObject.h>
@class NSWindow;
@class NSTextField;
@class NSNotification;
@interface AppController : NSObject
{
   NSWindow *window;
   NSTextField *label;
}
- (void)applicationWillFinishLaunching:(NSNotification *) not;
- (void)applicationDidFinishLaunching:(NSNotification *) not;
@end
#endif /* _AppController_H_ */<span style="white-space: pre;">		</span>

实现一个AppController.h的AppController.m文件#include "AppController.h"

#include <AppKit/AppKit.h>
@implementation AppController
- (void) applicationWillFinishLaunching: (NSNotification *) not
{
   /* Create Menu */
   NSMenu *menu;
   NSMenu *info;
   menu = [NSMenu new];
   [menu addItemWithTitle: @"Info"
                   action: NULL
            keyEquivalent: @""];
   [menu addItemWithTitle: @"Hide"
                   action: @selector(hide:)
            keyEquivalent: @"h"];
   [menu addItemWithTitle: @"Quit"
                   action: @selector(terminate:)
            keyEquivalent: @"q"];
   info = [NSMenu new];
   [info addItemWithTitle: @"Info Panel..."
                   action: @selector(orderFrontStandardInfoPanel:)
            keyEquivalent: @""];
   [info addItemWithTitle: @"Preferences"
                   action: NULL 
            keyEquivalent: @""];
   [info addItemWithTitle: @"Help"
                   action: @selector (orderFrontHelpPanel:)
            keyEquivalent: @"?"];
   [menu setSubmenu: info 
            forItem: [menu itemWithTitle:@"Info"]];
   RELEASE(info);
   [NSApp setMainMenu:menu];
   RELEASE(menu);
   /* Create Window */
   window = [[NSWindow alloc] initWithContentRect: NSMakeRect(300, 300, 200, 100)
                              styleMask: (NSTitledWindowMask |
                                          NSMiniaturizableWindowMask |
                                          NSResizableWindowMask)
                               backing: NSBackingStoreBuffered
                               defer: YES];
   [window setTitle: @"Hello World"];
   /* Create Label */
   label = [[NSTextField alloc] initWithFrame: NSMakeRect(30, 30, 80, 30)];
   [label setSelectable: NO];
   [label setBezeled: NO];
   [label setDrawsBackground: NO];
   [label setStringValue: @"Hello World"];
   [[window contentView] addSubview: label];
   RELEASE(label);
}
- (void) applicationDidFinishLaunching: (NSNotification *) not
{
   [window makeKeyAndOrderFront: self];
}
- (void) dealloc
{
  RELEASE(window);
  [super dealloc];
}
@end

接下来是配置gui.plist文件:

   {ApplicationDescription = "Hello World Tutorial";
   ApplicationIcon = "";
   ApplicationName = HelloWorld;
   ApplicationRelease = 0.1;
   Authors = "";
   Copyright = "Copyright (C) 200x by ...";
   CopyrightDescription = "Released under...";
   FullVersionID = 0.1;
   URL = "";
}

最后是比较重要的GNUmakefile:

GNUSTEP_MAKEFILES=D:/GNUstep/GNUstep/System/Library/Makefiles
include $(GNUSTEP_MAKEFILES)/common.make
APP_NAME = GUI
$(APP_NAME)_HEADERS = AppController.h
$(APP_NAME)_OBJC_FILES = main.m AppController.m
$(APP_NAME)_RESOURCE_FILES = guiInfo.plist
include $(GNUSTEP_MAKEFILES)/application.make

上述步骤中比较关键的是GNUmakefile的编写,其中GNUSTEP_MAKEFILES是我指定的GNUStep的安装目录的makefiles目录,APP_NAME是配置app名称,headers是header文件,如果存在多个.h文件,可以指定为*.h,OBJC_FILES为指定.h实现文件,如果有多个可以指定为*.m, RESOURCE_FILES为整个工程的属性配置文件。整个工程的截图如下:

第二步:配置codeblocks,进入Settings->Compiler and Debugger->Gobal compiler setting选项卡中点击“copy”按钮,并将该compiler命令为GNU Compiler Cocoa(可以随意指定),如图:

选择Toolchain executables ,设置compiler's installation directory 为你安装GUNStep的目录,我但前目录为D:\GNUstep,然后配置c compiler ,c++ compiler 等可执行文件,注意这个文件在D:\GNUstep\bin目录下,如图:

注意下图所示的红色区域,一定要选择正确的make可执行文件,在GNUstep\msys\1.0\bin目录下,笔者的目录为D:\GNUstep\msys\1.0\bin\make.exe,配置正确之后,点击OK

右键点击工程“gui”,选择“properties”,在"project setting"中勾选”this is a custom Makefile"复选框,Makefile的名称必须为GNUmakefile, "Execution Directory"选择工程所在文件目录。如图所示

右键点击工程“gui”,选择“build options”,在debug分支中选择上一步配置好的compiler,即“ GNU Compiler Cocoa",然后在下方的"Make" commands中配置下面的选项,如下所示:

上述步骤完成之后,Antr+F11重新编译工程,如果没有问题的话,会有如下输出:

<span style="white-space: normal; background-color: #ffffff;">
 Clean: Debug in gui 
</span>

Cleaned "gui - Debug"
-------------- Build: Debug in gui ---------------
Using makefile: GNUmakefile
This is gnustep-make 2.6.1. Type 'make.exe print-gnustep-make-help' for help.
Making all for app GUI...
 Copying resources into the app wrapper...
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 0 warnings


추천

출처blog.csdn.net/zp1990412/article/details/42754959