2016-07-13 3 views
0

私は、makefileを使ってboost cppアプリケーション用のコードを作成しています。メイクファイルを実行しますと、それは次のようなメッセージWindowsのコンソールでファイルのコマンドを実行しないようにする

g++ -c -Wall -I/c/MinGW/include/ -lboost_system -lws2_32 Timer_async.cpp -o Timer_async.o 

を示し、次のエラーに

#include <boost/asio.hpp> 
         ^
compilation terminated. 
mingw32-make: *** [makefile:15: Timer_async.o] Error 1 

がスローされますが、私はこれを実行した場合のmakefileは

プロンプトシェル
g++ -c -Wall -I/c/MinGW/include/ -lboost_system -lws2_32 Timer_async.cpp -o Timer_async.o 

からコマンドを生成したプログラムが適切に構築します。私のメイクファイルは

CC=g++ 
CFLAGS=-c -Wall 
LDFLAGS=-lboost_system -lws2_32 
INCLUDES=-I/c/MinGW/include/ 
SOURCES=Timer_async.cpp 
OBJECTS=$(SOURCES:.cpp=.o) 
EXECUTABLE=hello 

all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(SOURCES) $(INCLUDES) $(LDFLAGS) -o [email protected] 

.cpp.o: 
    $(CC) $(CFLAGS) $(INCLUDES) $(LDFLAGS) $< -o [email protected] 

答えて

0

ようです

なぜあなたはすべての依存関係として$(SOURCES)$(EXECUTABLE)の両方を指定するのですか? $(EXECUTABLE)ルールが達成されていないということを追加するのは何ですか?

ターゲットファイルが見つからないため、#includeが失敗しています(診断メッセージが示すようなものです)。 -Iフラグを誤って使用しています。それはどのようにincludedFile.cが位置しているかに影響します。 <includedFile.c>には影響しません。

あなたの結論「Makefileコマンドは実行されませんでした」(そして私は「Makefileコマンド」が何であるか分かりません)は不当です。 makeはまさにそれが想定されていたものでした。

+0

です。 – prasad

+0

エラーはシェルから同じ行を実行していますが、makeから実行しています。だから私はこれが-Iフラグによるものだとは思わない。 – prasad

0

エラーは、ファイルパスをどのように処理するのでしょうか。より具体的な

CFLAGS = -c -I/c/MinGW/include 
2 
3 hello: Timer_async.o 
4 
5 Timer_async.o: Timer_async.cpp 
6   g++ $(CFLAGS) Timer_async.cpp 
7 
8 clean: 
9   rm Timer_async.o 

を以下にファイルを作る変更した後、私はまだエラーを得ていたが、パスに二重引用符を追加した後、すべてのエラーが修正されました。

マイ修正makeファイルは、私は、この標準のメイクファイル形式http://mrbook.org/blog/tutorials/make/を使用してマクロをINCLUDEための私のサポートを追加し

CFLAGS = -c -I"/c/MinGW/include" 
2 
3 hello: Timer_async.o 
4 
5 Timer_async.o: Timer_async.cpp 
6   g++ $(CFLAGS) Timer_async.cpp 
7 
8 clean: 
9   rm Timer_async.o 
関連する問題