2017-10-31 19 views
0

私は現在、単純なC++アプリケーション用にMakefileを作成しています。以下のヘッダおよびリンカーを有する瞬間ヘッダーとリンカーを含むメイクファイル

、私はユニークなファイルをコンパイルしたいのですが、main.cpp

g++ main.cpp -L/usr/local/Cellar/boost/1.65.1/lib -I/usr/local/Cellar/boost/1.65.1/include -lboost_system 

私はターミナルで次のコマンドをプロンプトすると、すべてがうまく動作します。 Makefile

SRC_FILES=main.cpp 
LDLIBS=-L/usr/local/Cellar/boost/1.65.1/lib -I/usr/local/Cellar/boost/1.65.1/include 
LD=-lboost_system 

main.cpp: 
    g++ main.cpp ${LDLIBS} ${LD} 

に入れ、make -f Makefile mainを実行しようとすると、しかし、それはコンパイルされません。

Undefined symbols for architecture x86_64: 
    "boost::system::system_category()", referenced from: 
     boost::asio::error::get_system_category() in main-100974.o 
     ___cxx_global_var_init.2 in main-100974.o 
    "boost::system::generic_category()", referenced from: 
     ___cxx_global_var_init in main-100974.o 
     ___cxx_global_var_init.1 in main-100974.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [main] Error 1 

引数が正しく渡されていないように見えます。

N.B:私は make -f Makefile main.cppを実行しようとすると、コンパイラは私がMakefile内で何か間違ったことをやっていると仮定しますが、何を知らないmain.cpp is already up-to-date

ことを私に伝えます。

main.cpp: 

は、それが存在するかよりも古いしない場合main.cppにを作成する方法を作るよう指示:あなたの助けのための

おかげで、あなたはターゲットを定義:の左側にあるMakefileで

答えて

1

、ないソース依存関係(あなたの場合は右にあります)は何もありません。あなたのプログラムに名前をつけて、それをターゲットにする必要があります:

programname: main.cpp 
     g++ main.cpp ${LDLIBS} ${LD} -o programname 
関連する問題