2016-11-17 17 views
0

私はそうのようなメイクファイルを書いていると、エラーが見つかりませんコマンド++ G:メイク:メイク

LIB_DIR = $(shell pwd)/.linuxbrew/Cellar/boost/1.62.0/ 

FLAGS = -std=c++14 

INC= -I$(LIB_DIR)include 
LIB_PATH = -L$(LIB_DIR)lib 
LIB = $(LIB_DIR)lib 

LIBNAMES := filesystem-mt filesystem system-mt system 

LIBS := $(foreach N,$(LIBNAMES),$(LIB)libboost_$N.a $(LIB)libboost_$N.dylib) 

PATH = /Some/Path/ 

default: 
     g++ main.cpp $(FLAGS) $(INC) $(LIB_PATH) $(LIBS) -o assemble 
     ./assemble $(PATH) 

clean: 
     rm assemble 

問題は、私は「LIB_DIRを」変数を含めると、それはG ++見つけることができない文句を言い、あります。私はいくつかの助けをすることができます。

+0

"LIB_DIR '変数をインクルードし、実行したときに呼び出された正確なコマンドとエラーメッセージを正確に表示してくださいあなたは得る。また、makefileを使ってこれを行うには、実際には意味がありません。あなたはmakeの機能を使いません。たびにすべてをコンパイルするだけです。コンパイル行を含むシェルスクリプトを作成し、それを使って処理するのはなぜでしょうか? – MadScientist

+0

練習のため。 LIB_DIRを削除してもうまく動作します。私はPATHを使う必要があります。なぜなら、ディレクトリに内容をアクセスするための実行を渡すからです。私がLIB_DIRを削除すると、それは私のマシン(インテント)上で正常に動作します。リモートマシンではBoostライブラリの場所なので、LIB_DIRをインクルードします。 –

+0

OKですが、変数を設定する以外にmakeの機能に遠隔的に関係することを実際にやっていないのであれば、それほど練習ではありません。 – MadScientist

答えて

0

LIB_DIRではなく、PATHがあなたを殺しています。その行をコメントアウトしてみてください。 (私はg ++が/ Some/Path /にないと仮定しています)

+0

私のプログラムの実行可能なbc部分でパスを渡すと、ディレクトリ内のファイルが処理されます。 –

+0

「PATH」という名前の変数を使用することはできませんが、Johnが言っていることです。 'PATH'変数は、(コンパイラのように)実行したいすべてのプログラムが存在する場所を格納するためにシェルが使用します。その変数をメイクファイルでリセットすると、それを上書きします。変数名 'PATH'を' APP_PATH'のようなものに変更してください。 – MadScientist