私は現在、単純な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で