Windows版インテルコンパイラでnmakeがエラーを出す

このQ&Aのポイント
  • Windows版でのインテルコンパイラ(icl)を使用している際に、nmakeコマンドが正常に動作しない問題が発生しています。
  • エラーメッセージは、makefileの22行目で無効な文字の'{'がマクロ中にあることを示しています。
  • Windowsのコマンドプロンプトでは、'{}'の括弧を使用することができないため、これが問題の原因です。
回答を見る
  • ベストアンサー

win版インテルコンパイラnmakeの括弧について

linux版インテルコンパイラ(icc)を使っているmakefileをwindows版インテルコンパイラ(icl)で使えるように書きかえているのですが、コマンドプロンプトでどうもnmakeがうまくいきません。 nmakeをしたときのエラーメッセージは、 makefile(22) : fatal error U1001: 構文エラー : 無効な文字 '{' がマクロ中にありま す。 です。makefile22行目は $(PROGRAM) : ${OBJS} $(CC) $(CFLAGS) -o $@ ${OBJS} $(LIBS) なのですが、コマンドプロンプトで{}の括弧は使えないのでしょうか。 またうまくいくようにするにはどうすればよろしいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.1

コマンドプロンプトは全く関係なく、nmakeが ${マクロ名} をマクロとして解釈しないというだけかと。 $(マクロ名) ではダメなのですか?

toupo501
質問者

お礼

回答ありがとうございます。 ()にするとまた別のエラーが出てしまいました。 現在の質問内容だと、説明のしづらい部分や分かりづらいところがありますので、一度回答を締め切り、再度詳細を書いて質問しようと思います。 回答ありがとうございました。

関連するQ&A

  • win版インテルコンパイラnmakeについて

    linux版インテルコンパイラ(icc)を使っているmakefileをwindows版インテルコンパイラ(icl)で使えるように書きかえているのですが、コマンドプロンプトでどうもnmakeがうまくいきません。 元のmakefileは、 CC = icc CFLAGS = -O3 -xSSE4.2 CFLAGS2 = $(CFLAGS) -openmp -openmp-report1 LIBS = -lm -liomp5 PROGRAM = foo.exe SRCS = foo1.c foo2.c foo3.c .c.o: $(CC) $(CFLAGS) -c $< .SUFFIXES: .c .o all : $(PROGRAM) $(PROGRAM) : ${OBJS} $(CC) $(CFLAGS) -o $@ ${OBJS} $(LIBS) foo1.o : foo1.c foo.h foo2.o : foo2.c foo.h $(CC) $(CFLAGS2) -c $< foo3.o : foo3.c foo.h clean: rm *.o rm $(PROGRAM) で、書き換えたmakefileは、 CC = icl CFLAGS = -O3 -QxSSE4.2 CFLAGS2 = $(CFLAGS) -Qopenmp # CFLAGS = -W -O3 LIBS = -lm -liomp5 PROGRAM = foo.exe SRCS = foo1.c foo2.c foo3.c .c.o: $(CC) $(CFLAGS) -c $< .SUFFIXES: .c .o all : $(PROGRAM) $(PROGRAM) : ${OBJS} $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) foo1.o : foo1.c foo.h foo2.o : foo2.c foo.h $(CC) $(CFLAGS2) -c $< foo3.o : foo3.c foo.h clean: rm *.o rm $(PROGRAM) です。(投稿の際に見づらかったためスペースや改行はいじってます) CFLAGS2の-openmpを-Qopenmpにしたのと $(PROGRAM)の行の${OBJS}を$(OBJS)にしたぐらいですがエラーが発生します。({}括弧を使っているとエラーが発生したため) エラーメッセージは NMAKE : warning U4006: 特殊マクロは定義されていません : '$<' です。 {}の括弧を()に修正したのも似たエラーが発生したからなのですが、 コマンドプロンプトだと特殊マクロは使えないのでしょうか?

  • Javaのコンパイラ!!

    いま、C++言語の学習中です。 次はJavaかなぁと思っている今日この頃。。。 Javaのプログラムはコマンドプロンプトでコンパイルできるのは経験済みです(超初歩ですが・・『こんにちは』と表示させたりです) コマンドプロンプトはちょっと使い勝手が悪いので・・ コマンドプロンプト以外でJavaをコンパイルするフリーソフトはありますか?? できれば、使い方が載っているホームページがある方がよいのですが。。 Visual studio でもいいのですが英語版で・・・使いにくいかなぁと思っており、Javaでアプリを作成するくらいまでには成長したいとはおもっています。 C/C++ のコンパイラはCygwin とか Visual C++ を使っています。

    • ベストアンサー
    • Java
  • intelのfortran, Cのコンパイラ

    intelのfortran, CのコンパイラのWindows版についてお尋ねします。 コマンドラインで実行しており、そのような使い方で何も困らないのですが、Microsoft Visual studioを使うことも推奨されるようなのです。デバッガはその方が良さそうですが。 そこでお尋ねします。 1.今一度、用途は何でしょうか。 2.Microsoft visual studioは有償のものでないとダメでしょうか。一度、販売店に聞いたら無償のもの(express)は利用できないということでした。腑に落ちないので両者の方の意見を聞きたいのですが。 3.ずっとコマンドラインで使っていましたが、後からvisual studioをインストールしても問題ないでしょうか。 4.ウィンドウズ上で並列処理(CPUを分割して並列処理する)のに必須でしょうか。mpich2を利用するためにvisual studioの環境を利用するという人がいましたが。Linux版はもちろん関係ないわけですが、並列環境を整えることは可能です。考え方がだいぶ違うわけですがどのように考えるのでしょうか。(質問が漠然としています)。 以上、よろしくお願いします。

  • Cgコンパイラについて教えてください

    nVidiaのCgコンパイラをインストールして コマンドプロンプトで >cgc -profile ps_2_0 sample.fx と入力してHLSLで記述したものをコンパイルすると (0) : error C3001: no program defined 136 lines, 1 errors. と表示されて、コンパイルできない原因がよくわかりません。 原因としてどのようなことが考えられますでしょうか。 よろしくお願い致します。

  • ilink32について。'__setargv__'と'__turboFloat__'が未解決

    WindowsXP+bcc32+ilink32でGLUTを使ったプログラムを書いています。 bccの設定はsetbcc.exe(http://www.cmagazine.jp/setbcc.html)を使いました。 opengl32.lib, glu32.lib, glut32.libはimplib.exe(http://blog.jyoken.net/?eid=478291)を使って作成しました。 以上の設定でbcc32付属のMakeを使ってmakeしたところ、 コンパイル後のリンクで以下のようなエラーが出てしまい困っています。 どなたか解決法を教えていただけないでしょうか? よろしくお願いします。 --------------------- エラーの内容 --------------------- Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '__setargv__' が未解決(root が参照) Error: 外部シンボル '__turboFloat' が未解決(root が参照) --------------------- --------------------- 使用しているMakefile --------------------- CC = bcc32 LINKER = ilink32 SRCS = main.c callback.c Task.c Logger.c OBJS = $(SRCS:.c=.obj) TARGET = main.exe CFLAGS = -wall -O2 LFLAGS = LIBS = opengl32.lib glu32.lib glut32.lib INCLUDE = -I"C:\borland\bcc55\Include" LIB = -L"C:\borland\bcc55\Lib" all: $(TARGET) .SUFFIXES : .obj .c .c.obj: $(CC) $(CFLAGS) -c $(SRCS) $(TARGET): $(OBJS) $(LINKER) $(LFLAGS) $(LIB) $(OBJS),$(TARGET),,$(LIBS) ---------------------

  • gfortranでmakefile

    gfortranのmakefileを作成し、"make test"と実行しても成功しません。 どうすればいいのでしょうか? どこか間違いがあるでしょうか? 下にmakefileを全文載せましたのでアドバイスをよろしくお願いします。 OBJS = main.o tree.o treef.o test : ${OBJS} gfortran -c test ${OBJS} main.fやtree.fやtreef.fのファイルの中身は問題ありません。 他のパソコンではキチンとコンパイルに成功しています。 ちなみに、"make test"と実行して出てくるエラーメッセージが「makefile:3 *** 最初のターゲットより前にコマンドを起動. 中止.」 です。

  • コンパイル時のエラーメッセージについて

    http://mattn.kaoriya.net/software/lang/ruby/を参考にMakefile.w32を作成(テキストにコピペした後ファイル名をMakefile.w32に変更)しnmakeコマンドで実行したら次のエラーが出てきました。 fatal error C1510: Cannot load language resource clui.dll. NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x4' Stop. このエラーは何を示しているのでしょうか?エラー検索をしたのですがひっかかるのは英語で書かれているページが多く、恥ずかしながら読めなくて困っています。

  • Windows環境へのmakeについて

    Windowsの開発環境でmakeを使用したいと思います。シェルでフォルダを選んでmakeコマンドを投入するとmakefileの指示に従ってそのフォルダのソースファイルなどを集めて実行ファイルを作成するところまでやってくれるというものです。 Linuxはmakeコマンドが当然ながら普通に利用できるのでその方向に沿ってシェルに依存したmakefileを作成すると思います。Windowsの場合は基本はmakeコマンドがないので、別途、取り寄せるのだと思います。 今の状態で、Windowsのパワーシェルでwhich make -a とすると、Rtools, bcc55, Gow(Gnu on Windows)のmake.exeが出てきます。適切なmakeが最初に呼ばれるように環境を編集してあとはmakefileを編集すればいいということなのでしょうか。Windowsにはnmake, cmakeなどいろんなものもありますが。コンパイラはgfortranとかgccなどのGNUのコンパイラで、これはシェルからコンパイルできるようになっています。Visual studio系はすぐには使いません。 Windowsのシェルでmakeを利用する手順を教えて頂きたいと思います。よろしくお願いします。

  • Eclipse 3.5 Galileo + CDT + cygwinで

    Eclipse 3.5 Galileo + CDT + cygwinで、CやC++のプログラムを作りたいと考えています。 しかし、ビルドが通らず、困っています。 行った作業手順は、以下の通りです。 (1)まず、下記サイトを参考に、簡単なCプログラムを作りました。  http://www.c.csce.kyushu-u.ac.jp/~seiichirou/wiki/index.php?Makefile%A4%CE%BD%F1%A4%AD%CA%FD  ----以下、作成したプログラム----  /* hello.c */  #include <stdio.h>  void edajima(void);  int main(int argc, char* argv[]) {   edajima();   return 0;  }  /* edajima.c */  #include <stdio.h>  void edajima(void);  void edajima(void) {   printf("わしが男塾塾長 江田島平八である!!\r\n");  }  ----プログラムここまで---- (2)そして、Makefileを以下のように作成しました。  ----以下、Makefile----  # Makefile  CC = gcc  CXXFLAGS = -O2 -g -Wall -fmessage-length=0  OBJS = edajima.o hello.o  LIBS =  TARGET = hello.exe  $(TARGET): $(OBJS)   $(CC) -o $(TARGET) $(OBJS) $(LIBS)  all: $(TARGET)  hello.o: hello.c   $(CC) -c hello.c  edajima.o: edajima.c   $(CC) -c edajima.c  clean:   rm -f $(OBJS) $(TARGET)  ----Makefileここまで---- (3)次に、EclipseでCのMakefileプロジェクトの作成をしました。   ロケーションは、上記ソースやMakefileがあるディレクトリを指定しました。 (4)Eclipseのプロジェクトエクスプローラで、Makefileを右クリックし、[Makeターゲット]-[作成]   でMakeターゲットを作成しました。 (5)Makefileを右クリックし、[Makeターゲット]-[ビルド]を実行すると、下記エラーが出て、   ビルドに失敗しました。  make hello  gcc -c hello.c  gcc hello.o -o hello  hello.o:hello.c:(.text+0x17): undefined reference to `_edajima'  collect2: ld returned 1 exit status  make: *** [hello] Error 1 どうやら、edajima.cがコンパイルされていない様です。 cygwin上でmakeコマンドを実行すると、ビルドできるので、Makefileは間違っていないと思っているのですが・・・。 どなたか、分かる方、ご教授願います。

  • C++のプログラムをWindows上で呼び出す

    C++のプログラムをmakefileによってコンパイルし,make ooo.exe makefileと入力することにより実行結果がコマンドプロンプトに表示できました。(コンパイラはBCC)この実行結果をWindows上で呼び出し,テキストボックスに表示したいのですが,どのようにしたらよいのか全く分かりません。どなたかお暇であればおこたえいただけると嬉しいです。学生の身分で,知識も浅く文章等に乱れがあるかと思いますが,不明な点は質問して下さったら幸いです。皆様よろしくお願いします。

専門家に質問してみよう