3

この質問に関連する質問があります WindowsでGnustepを使用してObjective Cをコンパイルできません

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 シェルでこれを行うと、エラーが発生します

GNUmakefile:1 *** missing separator. Stop.

1行目にタブを追加してみました。これは何もしませんでした。はい、スペースではなくタブだったと思います。

4

4 に答える 4

3

私も同じ問題を抱えていました。私はNotepad++を使用してGNUmakefileを作成しました。Notepad++での私のデフォルトのエンコーディングはUTF8です。しかし、MINGW32のmake.exeは、ANSIエンコーディングのファイルを待機しているようです。

したがって、ファイルがANSIでエンコードされているかどうかを確認してください。

于 2012-07-18T09:39:34.853 に答える
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 に答える
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`

pkg-configコマンドのようなgnustep-configは、gcc のコンパイルおよびリンク オプションを出力できます。

于 2012-09-12T10:28:45.980 に答える
1

Foundation.hヘッダー ファイルのフル パスを指定する必要はありません。それは常にあるべき#import <Foundation/Foundation.h>です。

これは、メイクファイルの問題とともに、マシンで何かが正しくセットアップされていないことを示しています。makemsys シェルまたは Windows コマンドラインからコマンドを実行しましたか? Windows コマンド ラインを使用することを選択した場合、GNUstep インストーラーで提供される msys シェルとは対照的に、そこで環境が正しくセットアップされないため、いくつかの問題に直面することになります。

一方、gcc を手動で実行したい場合は、このSO answerをご覧ください。

于 2011-02-18T09:51:58.130 に答える