मैं makefiles के लिए बहुत नया हूं और मैं makefile का उपयोग करके निर्देशिका बनाना चाहता हूं। मेरी परियोजना निर्देशिका इस प्रकार है
+--Project
+--output
+--source
+Testfile.cpp
+Makefile
मैं सभी वस्तुओं और आउटपुट को संबंधित आउटपुट फ़ोल्डर में डालना चाहता हूं। मैं फ़ोल्डर संरचना बनाना चाहता हूं जो संकलन के बाद इस तरह होगा।
+--Project
+--output
+--debug (or release)
+--objs
+Testfile.o
+Testfile (my executable file)
+--source
+Testfile.cpp
+Makefile
मैंने कई विकल्पों के साथ कोशिश की, लेकिन सफल नहीं हो सका। कृपया फ़ाइल बनाने के लिए निर्देशिका बनाने में मेरी मदद करें। मैं आपके विचार के लिए अपना मेकफाइल पोस्ट कर रहा हूं।
#---------------------------------------------------------------------
# Input dirs, names, files
#---------------------------------------------------------------------
OUTPUT_ROOT := output/
TITLE_NAME := TestProj
ifdef DEBUG
TITLE_NAME += _DEBUG
else
ifdef RELEASE
TITLE_NAME += _RELEASE
endif
endif
# Include all the source files here with the directory tree
SOURCES := \
source/TestFile.cpp \
#---------------------------------------------------------------------
# configs
#---------------------------------------------------------------------
ifdef DEBUG
OUT_DIR := $(OUTPUT_ROOT)debug
CC_FLAGS := -c -Wall
else
ifdef RELEASE
OUT_DIR := $(OUTPUT_ROOT)release
CC_FLAGS := -c -Wall
else
$(error no build type defined)
endif
endif
# Put objects in the output directory.
OUT_O_DIR := $(OUT_DIR)/objs
#---------------------------------------------------------------------
# settings
#---------------------------------------------------------------------
OBJS = $(SOURCES:.cpp=.o)
DIRS = $(subst /,/,$(sort $(dir $(OBJS))))
DIR_TARGET = $(OUT_DIR)
OUTPUT_TARGET = $(OUT_DIR)/$(TITLE_NAME)
CC_FLAGS +=
LCF_FLAGS :=
LD_FLAGS :=
#---------------------------------------------------------------------
# executables
#---------------------------------------------------------------------
MD := mkdir
RM := rm
CC := g++
#---------------------------------------------------------------------
# rules
#---------------------------------------------------------------------
.PHONY: all clean title
all: title
clean:
$(RM) -rf $(OUT_DIR)
$(DIR_TARGET):
$(MD) -p $(DIRS)
.cpp.o:
@$(CC) -c $< -o $@
$(OBJS): $(OUT_O_DIR)/%.o: %.cpp
@$(CC) -c $< -o $@
title: $(DIR_TARGET) $(OBJS)
अग्रिम में धन्यवाद। अगर मैंने कोई गलती भी की हो तो कृपया मेरा मार्गदर्शन करें।
output/debug', needed by
निर्देशिका बनाने के लिए कोई नियम नहीं है "। स्टॉप। " लेकिन मैं अब इस बारे में चिंता करने वाला नहीं हूं। बुनियादी नियमों के साथ रहना होगा। :)। मार्गदर्शन के लिए धन्यवाद। और मैं केवल टॉपलेवल डायरेक्टरी से "मेक" चला रहा हूं।