コンパイラのオブジェクトファイルをソースファイルとは別のフォルダに配置したいと思います。私はソースコードがビルドされているのと同じフォルダ構造を使用しているときに動作させましたが、これは私が探している解決策ではありません。次は何私が今まで持ってオブジェクトと依存ファイルを別々のフォルダに自動配置するMakefile
obj/main.o
obj/myClass.o
依存
dep/main.d
dep/main.d
:
出典:
src/main.cpp
src/myClass/myClass.cpp
オブジェクト私が好む何
は以下のとおりです。
個の変数ここ
$(OBJLIST)=obj/main.o obj/myClass.o
$(SRCDIR)=src
$(OBJDIR)=obj
リンカ
$(PROJECT): $(OBJLIST)
$(CXX) $(OBJLIST) $(LIBS) -o [email protected]
コンパイラとは
これが働いているものです私の問題である
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@mkdir -p $(DEPDIR) $(OBJDIR)
$(CXX) $(CPPFLAGS) -c $< -o [email protected]
$(CXX) $(CPPFLAGS) -MM -MT 1_obj/main.o 0_src/main.cpp -o 2_dep/main.dep
$(OBJDIR)/%.o: $(SRCDIR)/myClass/%.cpp
@mkdir -p $(DEPDIR) $(OBJDIR)
$(CXX) $(CPPFLAGS) -c $< -o [email protected]
$(CXX) $(CPPFLAGS) -MM -MT 1_obj/myClass.o 0_src/myClass/myClass.cpp -o 2_dep/myClass.dep
私も含むSRCDIRSと呼ばれるオブジェクトいます
SRCDIRS
./
./myClass
は、だから私は、私は
$(OBJDIR)/%.o: $(SRCDIR)/$(SRCDIRS)/%.cpp
@mkdir -p $(DEPDIR) $(OBJDIR)
$(CXX) $(CPPFLAGS) -c $< -o [email protected]
$(CXX) $(CPPFLAGS) -MM -MT [email protected] @< -o $(DEPDIR)/$(notdir $(basename $<).dep)
のようなものにコンパイル定義をマージすることができ望んだが、私は、何とかそれを、これは両方の可能性のための一般化を望んだが、 SRCDIRSをループして一致するものがないかどうかを確認しません。
一般的な方法は、 '.d'ファイルをmakefileに含めることです。 –
これは本当に私の問題ではありません、私はどのように私は自動的に別のフォルダにoファイルを置くことができます知っていると思います。しかし、.cppファイルのフォルダ構造全体を再構築する必要はありません。したがって、すべてのフォルダとサブフォルダからすべてのソースファイルを取得し、コンパイル中にo-ファイルを単一のフォルダに配置します。 – Lucian