ソースファイルをオブジェクトファイルにコンパイルするための依存関係規則の前提条件を生成するためにgcc -MMを使用しています。私は、オブジェクトファイルを保持するディレクトリと実行可能な変数をBIN_DIR = bin/release /という変数で指定します。 2例があります。メインC++オブジェクトファイルのディレクトリとMakefileの実行ファイルを指定します。
:
CASE 1
%.d: *.h *.cc Makefile @$(CXX) -MM $(CXXFLAGS) *.cc > [email protected]$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' < [email protected]$$$$ > [email protected]; $(RM) -rf [email protected]$$$$
sedのために慣れていないけれども、私は、sedのユーティリティの目的は(たとえば)翻訳することであることを学びました.o:main.cc defs.h
into:
main.o main.d: ビン//main.dリリース/ main.oビン/発売:main.cc defs.h
私の質問は、に、さらにそれを変更する方法です。 main.cc defs.h
もし誰かがここでsedの使い方を説明できたら、それは大いに感謝しています!
CASEファイルMakefile.dependで2
Makefile.depend: *.h *.cc Makefile
$(CXX) -MM $(CXXFLAGS) *.cc > Makefile.depend
、あなたはそれぞれのルールは、この例のようなものですが表示されます:
main.o:defs.h main.cc
変更方法:
ビン/リリース/ main.o:defs.h main.cc
おかげに関して!
注:私は今はコメントできない理由
私は知りません。だから私はここに私の更新を入れた:
VPATHは、ソースコードのディレクトリを指定することです。しかし、make -f path2Makefileを実行する必要があります。ここではどこからでもmake -f path2 Makefileを実行できるようにしたいと思います。したがって、オブジェクトファイルのディレクトリを指定することをお勧めします。ベータ版へ
:あなたの助けを
ありがとう!あなたの答えにコメントすることができないのであれば、私を許してください。 2番目の場合のメソッドの問題は、コマンドの後に、いくつかの行を持ついくつかの規則がすべての1行に接頭辞を受け取ることです。例えば
main.o:main。
のsrc/misc.h
\のcc defs.hは次のようになります。
$(このBin_dir)main.o:defs.h main.cc \
$(このBin_dir )src/misc.h
ああ、ご容赦ください。私が従業員に触れてからずっとずっとずっと忘れていた。私はそれを修正しようとしましょう... – Beta