私は様々なサブディレクトリに分散されたソースからなるプロジェクトを構築しようとしています。ここでメイクファイルからビルドするときのリンカエラー
Project root
├───build
└───src
│ main.cpp
│
├───ui
│ more files
│
└───core
more files
は私が使っているメイクファイルの関連する部分です:それはトラブルの主な機能が含まれているmain.o
ファイルを見つけることがあるので、おそらくundefined reference to WinMain
:
EXT := cpp
SRC_DIR := src/ui src src/core
SOURCES := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.$(EXT)))
OBJECTS := $(SOURCES:.$(EXT)=.o)
BIN := program
$(BIN): $(OBJECTS)
$(LD) $(LDFLAGS) -mwindows $^ -o [email protected] $(LDLIBS)
$(OBJECTS): $(SOURCES)
$(CC) $(CFLAGS) -c $< -o [email protected]
これは、次のエラーメッセージになります。
すべてのオブジェクトファイルをbuild
フォルダに移動すると、この問題が解決され、これを行うにはどうすればよいでしょうか?
$(OBJECTS)ターゲットを削除するとうまくいくはずです。デフォルトのターゲットは '$(CXX)$(CXXFLAGS)-c -o $ @ $ <'を使用します。 – ssbssa
@ssbssaうまく動作します。オブジェクトファイルも移動したいのであれば、明示的なルールが必要でしょうか? –
私はあなたがこれを意味すると思います: 'objdir /%。o:%.cpp; $(CXX)$(CXXFLAGS)-c $ <-o $ @ ' – ssbssa