Tôi là người mới làm quen với makefiles và tôi muốn tạo thư mục bằng makefile. Thư mục dự án của tôi như thế này
+--Project
+--output
+--source
+Testfile.cpp
+Makefile
Tôi muốn đặt tất cả các đối tượng và đầu ra vào thư mục đầu ra tương ứng. Tôi muốn tạo cấu trúc thư mục giống như thế này sau khi biên dịch.
+--Project
+--output
+--debug (or release)
+--objs
+Testfile.o
+Testfile (my executable file)
+--source
+Testfile.cpp
+Makefile
Tôi đã thử với một số tùy chọn, nhưng không thể thành công. Vui lòng giúp tôi tạo thư mục bằng cách sử dụng tệp tin. Tôi đang đăng Makefile của tôi để bạn xem xét.
#---------------------------------------------------------------------
# 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)
Cảm ơn trước. Xin vui lòng hướng dẫn tôi nếu tôi cũng mắc lỗi.
output/debug', needed by
thư mục đích '. Dừng lại." Nhưng tôi sẽ không lo lắng về điều đó bây giờ. sẽ gắn bó với các quy tắc cơ bản. :). Cảm ơn bạn đã hướng dẫn. Và tôi đang chạy "make" chỉ từ thư mục cấp trên cùng.