私は GNUStep をいじっていましたが、正常にコンパイルされる単純な main.m があります。Objective-C ライブラリ (ios/mac 用) が GNUStep で動作するかどうかを確認したかったので、JSONKit をダウンロードしてコンパイルしようとしましたが、このエラーが引き続き発生します。
mark@Emperor:~/objc-test2$ make
This is gnustep-make 2.6.2. Type 'make print-gnustep-make-help' for help.
Making all for tool Test...
Compiling file JSONKit.m ...
In file included from JSONKit.m:110:0:
JSONKit.h:63:21: warning: "/*" within comment [-Wcomment]
In file included from /usr/include/GNUstep/Foundation/NSAttributedString.h:143:0,
from /usr/include/GNUstep/Foundation/Foundation.h:42,
from JSONKit.h:72,
from JSONKit.m:110:
/usr/include/GNUstep/GNUstepBase/NSAttributedString+GNUstepBase.h:44:1: error: cannot find interface declaration for ‘NSAttributedString’
make[3]: *** [obj/Test.obj/JSONKit.m.o] Error 1
make[2]: *** [internal-tool-all_] Error 2
make[1]: *** [Test.all.tool.variables] Error 2
make: *** [internal-all] Error 2
mark@Emperor:~/objc-test2$
私のmain.mはこれです:
mark@Emperor:~/objc-test2$ cat main.m
#import <stdio.h>
#include <Foundation/Foundation.h>
#import "Fraction.h"
#import "JSONKit.h"
int main( int argc, const char *argv[] ) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// create a new instance
Fraction *frac = [[Fraction alloc] init];
// set the values
[frac setNumerator: 1];
[frac setDenominator: 3];
// print it
NSLog(@ "The fraction is: %@", [frac print]);
// free memory
[frac release];
NSMutableArray *testArr = [[NSMutableArray alloc] initWithCapacity:0];
[testArr addObject:[NSNumber numberWithInt:2]];
[testArr addObject:@"Hey"];
NSLog([testArr JSONString]);
[pool drain];
return 0;
}
mark@Emperor:~/objc-test2$
私はググって、GNUStep環境変数が設定されていることを確認しました.makeファイルを使用しています(オンラインの例から取得)
mark@Emperor:~/objc-test2$ cat GNUmakefile
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = Test
Test_OBJC_FILES = main.m Fraction.m JSONKit.m
Test_CPPFLAGS = $(RUNTIME_DEFINE)
# Include in the rules for making Objective-C programs
include $(GNUSTEP_MAKEFILES)/tool.make
mark@Emperor:~/objc-test2$
/Foundation/NSAttributedString.h には NSAttributedString のインターフェイス宣言と NSAttributedString+GNUStepBase.h imports が明確に含まれているため、これは本当にわかりません。何が問題なのですか?