1

メイクファイルを使用して Obj-C コードをコンパイルする方法を知っている人はいますか? 現在、コードをコンパイルして unix 実行可能ファイルを提供できますが、osx 実行可能ファイルを作成する方法がわかりません。試してみると、「クラシック環境がサポートされなくなったため、アプリを実行できません」というエラーが表示されます。

私の現在のメイクファイルは次のとおりです。

CC = gcc
SOURCES=Src/OSX/main.m
FRAMEWORKS:= -framework Foundation -framework Cocoa -framework AppKit
LIBRARIES:= -lobjc
CFLAGS=-Wall -Werror -arch i386 -g -v $(SOURCES)
LDFLAGS=$(LIBRARIES) $(FRAMEWORKS)
OUT=-o Build/main

all: $(SOURCES) $(OUT)

$(OUT): $(OBJECTS)
    $(CC) -o $(OBJECTS) $@ $(CFLAGS) $(LDFLAGS) $(OUT)

.m.o: 
    $(CC) -c -Wall $< -o $@
4

1 に答える 1

0

まず、makefile に問題はありません。次の main.m ファイルで使用したところ、期待どおりに動作しました。

#include <Foundation/Foundation.h>
#include <stdio.h>
#include <AppKit/AppKit.h>
int main (int argc, char **argv) {
    NSObject *obj = [[NSObject alloc] init];
    NSView *view = [[NSView alloc] init];
    fprintf(stderr, "Object: %s\n", [[obj description] UTF8String]);
    fprintf(stderr, "Object: %s\n", [[view description] UTF8String]);
    return 0;
}

また、file Build/main期待される結果が得られました: Mach-O executable i386.


「クラシック環境がサポートされなくなったため、アプリを実行できません。」

このエラーは、Mac OS 9 以前 (つまり、Apple の「クラシック」Mac OS システム) 用にビルドされたアプリケーションを実行しようとしたときに発生します。他の場所で少しファンキーなことをしていませんか (たとえば、非推奨の Carbon API を使用しようとしているなど)?

于 2013-10-06T06:27:47.587 に答える