1

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
4

5 に答える 5

3

ADDITIONAL_FLAGS += -std=gnu99私のために働いた( https://github.com/maddox/regexkit/blob/master/GNUstep/GNUmakefile に触発された

于 2011-12-16T02:01:53.680 に答える
0

別のロングショット:

export triangular_C_FLAGS = -std=gnu99

(これらの makefile は再帰しているようです。) それが機能しない場合は、ビルドしようとしているルールを見つける必要がありますmain.o

于 2011-06-30T18:46:25.750 に答える
0

私のプロジェクトで同様の問題に直面し、@eriktous によって提案された OBJCFLAGS 変数を使用するとうまくいきました。したがって、プロジェクトでこれを試してください:

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
于 2012-07-16T11:01:42.873 に答える
0

一見すると、含まれている makefile の内容を知らなくてもautomake、これは変数を適切なルールに変換する の入力のように見えます。メイクファイルをどのように実行していますか? あなたはただ走っているだけですmakeか、automake makefile.amそれとも何か他のことですか?

試してみることの1つは、行を追加することです

CFLAGS+=-std=gnu99

あなたのメイクファイルに。

于 2011-06-30T05:22:44.540 に答える
0

私は GNUstep について何も知りませんが、ドキュメントtriangular_CFLAGSでは(C と FLAGS の間のアンダースコアなしで) 使用する必要があることが示されているようです。

その上、ObjC についてはさらに詳しく知りませんが、triangular_OBJCFLAGS代わりに使用しない方がよいのでしょうか?

于 2011-06-30T12:37:41.720 に答える