3

我有一个与这个问题有关的问题Unable to Compile Objective C using Gnustep on windows

我正在尝试在 Windows 上编译我的第一个目标 c 应用程序。该文件是 hello.m(下面的所有文件都是在 Visual Studio 中创建的)

#import <../Program Files/GNUstep/System/Library/Headers/Foundation/Foundation.h>

int main(int argc, const char* argv[])
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello from Hello.m!");

    [pool release];
    return 0;
}

为了编译它,我在同一目录中有一个 GNUmakefile:

include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = hello
YourProg_OBJC_FILES = hello.m
include $(GNUSTEP_MAKEFILES)/tool.make

据我了解,当我运行 make 命令“make”时,GNUmakefile 将执行。

当我在 GNUStep shell 中执行此操作时,出现错误

GNUmakefile:1 *** missing separator. Stop.

我尝试在第一行添加一个选项卡。这什么也没做。是的,我确定它是一个选项卡,而不是一个空格。

4

4 回答 4

3

我有同样的问题。我使用 Notepad++ 制作了 GNUmakefile。我使用 Notepad++ 的默认编码是 UTF8。但是来自 MINGW32 的 make.exe 似乎在等待一个带有 ANSI 编码的文件。

因此,请验证您的文件是否使用 ANSI 编码。

于 2012-07-18T09:39:34.853 回答
1

在您的GNUmakefile中,YourProg_OBJC_FILES应修改为hello_OBJC_FILES,如下所示

include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = hello
hello_OBJC_FILES = hello.m
include $(GNUSTEP_MAKEFILES)/tool.make

或者你也可以像这样在命令行中编译

$ gcc `gnustep-config --objc-flags` hello.m -o hello `gnustep-config --base-libs`

gnustep-config类似pkg-config命令可以打印出 gcc 的编译和链接选项。

于 2012-09-12T10:28:45.980 回答
1

您永远不必提供Foundation.h头文件的完整路径。它应该永远是#import <Foundation/Foundation.h>

这与您的 makefile 问题一起表明您的机器上未正确设置某些内容。您是make从 msys shell 还是从 Windows 命令行运行命令?如果您选择使用 Windows 命令行,您将面临一些问题,因为那里的环境设置不正确,这与 GNUstep 安装程序提供的 msys shell 相反。

另一方面,如果你想手动运行 gcc,你可以看看这个SO answer

于 2011-02-18T09:51:58.130 回答
1

make抱怨你的makefile,所以你可能在某个地方有语法错误。

请参阅:http ://www.gnu.org/software/automake/manual/make/Error-Messages.html :

这意味着 make 无法理解有关它刚刚读取的 makefile 行的任何内容。GNU make 查找各种分隔符(:、=、配方前缀字符等)来指示它正在解析哪种类型的行。此消息意味着它找不到有效的消息。

试试你可以试试直接编译:

gcc -o hello hello.m -I/c/GNUstep/GNUstep/System/Library/Headers \
    -L /c/GNUstep/GNUstep/System/Library/Libraries -lobjc -lgnustep-base \
    -fconstant-string-class=NSConstantString
于 2011-01-23T07:03:32.547 回答