Tôi mới làm tệp. Tôi đã học được việc tạo ra makefile và các khái niệm liên quan khác từ cuốn sách "Quản lý dự án với GNU tạo". Makefile đã sẵn sàng ngay bây giờ và tôi cần phải chắc chắn rằng một trong đó tôi tạo ra là OK. Đây là makefileMakefile đơn giản với bản phát hành bản phát hành và gỡ lỗi - Các phương pháp hay nhất
#Main makefile which does the build
#makedepend flags
DFLAGS =
#Compiler flags
#if mode variable is empty, setting debug build mode
ifeq ($(mode),release)
CFLAGS = -Wall
else
mode = debug
CFLAGS = -g -Wall
endif
CC = g++
PROG = fooexe
#each module will append the source files to here
SRC := main.cpp
#including the description
include bar/module.mk
include foo/module.mk
OBJ := $(patsubst %.cpp, %.o, $(filter %.cpp,$(SRC)))
.PHONY:all
all: information fooexe
information:
ifneq ($(mode),release)
ifneq ($(mode),debug)
@echo "Invalid build mode."
@echo "Please use 'make mode=release' or 'make mode=debug'"
@exit 1
endif
endif
@echo "Building on "$(mode)" mode"
@echo ".........................."
#linking the program
fooexe: $(OBJ)
$(CC) -o $(PROG) $(OBJ)
%.o:%.cpp
$(CC) $(CFLAGS) -c $< -o [email protected]
depend:
makedepend -- $(DFLAGS) -- $(SRC)
.PHONY:clean
clean:
find . -name "*.o" | xargs rm -vf
rm -vf fooexe
Câu hỏi
- Các makefile đưa ra ở trên hoạt động tốt với phát hành và debug xây dựng. Nhưng nó có đúng định dạng không? Hay bạn có thấy bất kỳ sai sót nào trong đó không?
- Tệp makefile trên thực hiện gỡ lỗi theo mặc định khi được gọi bằng cách sử dụng tạo. Đối với bản phát hành bản phát hành, làm cho chế độ = release là bắt buộc. Đây có phải là cách tiếp cận chính xác không?
- Cờ gỡ lỗi và phát hành trình biên dịch được cung cấp cho g ++ có đúng không? Để gỡ lỗi, tôi sử dụng -g -Wall và để phát hành, chỉ -Wall. Thê nay đung không?
Mọi trợ giúp đều tuyệt vời.
Bạn có đang lên kế hoạch phát hành nguồn phần mềm của mình, kể cả Makefile không? Hoặc là bạn chỉ cần vận chuyển nhị phân? I E. sẽ có ai nhưng bạn và nhóm của bạn thấy và sử dụng Makefile này? – Schwern
Có. Tôi sẽ phát hành mã nguồn vì đây sẽ là một dự án mã nguồn mở. –