Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何获取GNUmakefile来识别-std=c99或-std=gnu99的CFLAGS选项?_Objective C_Makefile_Gnustep - Fatal编程技术网

Objective c 如何获取GNUmakefile来识别-std=c99或-std=gnu99的CFLAGS选项?

Objective c 如何获取GNUmakefile来识别-std=c99或-std=gnu99的CFLAGS选项?,objective-c,makefile,gnustep,Objective C,Makefile,Gnustep,我正在尝试使用c99或gnu99编译器选项编译GNUstep程序,但无法识别。。。这是我的makefile: include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = triangular triangular_C_FLAGS = -std=gnu99 triangular_HEADERS = triangular_OBJC_FILES = main.m triangular_RESOURCE_FILES = include $(GNUSTEP

我正在尝试使用c99或gnu99编译器选项编译GNUstep程序,但无法识别。。。这是我的makefile:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = triangular
triangular_C_FLAGS = -std=gnu99
triangular_HEADERS =
triangular_OBJC_FILES = main.m
triangular_RESOURCE_FILES =

include $(GNUSTEP_MAKEFILES)/tool.make
谁能给我指出正确的方向或让我知道我做错了什么

以下是make的输出:

This is gnustep-make 2.6.0. Type 'make print-gnustep-make-help' for help.
Making all for tool triangular...
 Compiling file main.m ...
main.m: In function 'main':
main.m:18:3: error: 'for' loop initial declarations are only allowed in C99 mode

main.m:18:3: note: use option -std=c99 or -std=gnu99 to compile your code
make[3]: *** [obj/triangular.obj/main.m.o] Error 1
make[2]: *** [internal-tool-all_] Error 2
make[1]: *** [triangular.all.tool.variables] Error 2
make: *** [internal-all] Error 2

乍一看,在不知道包含的makefile内容的情况下,这看起来像是
automake
的输入,它将变量转换为正确的规则。如何运行makefile?您是否正在运行
make
automakemakefile.am
或其他程序

要尝试的一件事就是添加行

CFLAGS+=-std=gnu99

到您的makefile。

我对GNUstep一无所知,但似乎表明您应该使用
三角形标记(C和标志之间没有下划线)

此外,我对ObjC的了解更少,但我想知道您是否不应该使用
三角形的OBJCFLAGS

export triangular_C_FLAGS = -std=gnu99

(这些生成文件似乎是递归的。)如果这不起作用,您必须找到试图构建
main.o

其他\u标志+=-std=gnu99
为我工作
(受

启发,我在项目中遇到了类似的问题,使用@eriktous建议的objclags变量对我有效。因此,在您的项目中,尝试以下方法:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = triangular
triangular_OBJCFLAGS = -std=c99
triangular_HEADERS =
triangular_OBJC_FILES = main.m
triangular_RESOURCE_FILES =

include $(GNUSTEP_MAKEFILES)/tool.make

您没有给我们提供足够的信息继续。当您尝试运行此程序时会发生什么?以及
tool.make
common.make
看起来像什么?我添加了make.tool.make和common.make的输出,它们是GNUstep环境中包含的大型make文件。这意味着
main.m
,第18行有问题。如果错误并不明显,请尝试在
helloWorld
中隔离代码片段,并手动编译,无需Make。@main.m
的beta-第18行的(int i=0;iThanks用于回答。我正在运行make。我尝试了上面的方法,但不幸的是仍然出现了错误。你能再解释一下吗?也许可以添加一个参考?我试图通过应用@eriktous在之前回答这个问题时给出的提示来解决类似的问题。该海报引用了GNUstep,其中提到了OBJCFLAGS变量。我已经编辑了我的原始帖子以显示完整的makefile。