Q&A
提示のmakefileですがOBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
をやっても複数あるオブジェクトファイルが一つしか設定されません。コンソール画面参考 ####
コメント部の内部のコードですがコメントしてるコードを実行するとうまくビルドされます。がなぜ$(OBJ)
の場合は先頭の一つしかビルドされないのでしょうか?原因がわかりません。
ディレクトリ構成
higurechan@shigurechan-System-Product-Name:~/Project/LinuxConsole$ ls LICENSE Makefile README.md lib_obj lib_src libconsole.a obj program run.sh src
コンソール
shigurechan@shigurechan-System-Product-Name:~/Project/LinuxConsole$ make g++ -c -MMD -MP lib_src/Console.cpp -o lib_obj/Console.o g++ -c -MMD -MP lib_src/Render.cpp -o lib_obj/Render.o ar rcs libconsole.a lib_obj/Console.o
Makefile
PRG := libconsole.a OBJ_DIR := lib_obj DEP_DIR := lib_obj SRC_DIR := lib_src SRC :=$(wildcard $(SRC_DIR)/*.cpp) DEP :=$(wildcard $(DEP_DIR)/*.d) OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC)))) ############################################################## $(PRG): $(OBJ) # ar rcs $@ lib_obj/Console.o lib_obj/Render.o ar rcs $@ $< ############################################################## $(OBJ_DIR)/%.o: lib_src/%.cpp $(CXX) -c -MMD -MP $< -o $@ -include $(DEP) clean: rm -f ./$(OBJ_DIR)/*.o ./$(OBJ_DIR)/*.d $(PRG)
run.sh
#!bin/bash make if [ $? = "0" ] ; then g++ -c src/Main.cpp -o obj/Main.o if [ $? = "0" ] ; then g++ obj/*.o -o program libconsole.a -lncurses ./program # 実行 else echo echo echo " Compile Error" echo echo fi else echo echo echo " Library Compile Error" echo echo fi
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。