1

有谁知道如何使用 makefile 编译 Obj-C 代码。目前,我可以让代码编译并给我一个 unix 可执行文件,但我不知道如何制作一个 osx 可执行文件,因为它在我尝试时给了我“无法运行应用程序,因为不再支持经典环境”错误。

我当前的makefile如下:

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 回答