c-programming:makefile:example
تفاوتها
تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده میکنید.
| نگارش بعد | نگارش قبل | ||
| c-programming:makefile:example [2024/04/20 01:30] – ایجاد شد nasser | c-programming:makefile:example [2024/04/20 01:34] (فعلی) – nasser | ||
|---|---|---|---|
| خط 1: | خط 1: | ||
| - | ====== | + | ====== |
| <code make> | <code make> | ||
| + | #Source: https:// | ||
| + | |||
| # define the C compiler to use | # define the C compiler to use | ||
| خط 41: | خط 43: | ||
| launch: program | launch: program | ||
| ./program | ./program | ||
| + | |||
| + | </ | ||
| + | |||
| + | <code make> | ||
| + | # Thanks to Job Vranish (https:// | ||
| + | TARGET_EXEC := final_program | ||
| + | |||
| + | BUILD_DIR := ./build | ||
| + | SRC_DIRS := ./src | ||
| + | |||
| + | # Find all the C and C++ files we want to compile | ||
| + | # Note the single quotes around the * expressions. The shell will incorrectly expand these otherwise, but we want to send the * directly to the find command. | ||
| + | SRCS := $(shell find $(SRC_DIRS) -name ' | ||
| + | |||
| + | # Prepends BUILD_DIR and appends .o to every src file | ||
| + | # As an example, ./ | ||
| + | OBJS := $(SRCS: | ||
| + | |||
| + | # String substitution (suffix version without %). | ||
| + | # As an example, ./ | ||
| + | DEPS := $(OBJS: | ||
| + | |||
| + | # Every folder in ./src will need to be passed to GCC so that it can find header files | ||
| + | INC_DIRS := $(shell find $(SRC_DIRS) -type d) | ||
| + | # Add a prefix to INC_DIRS. So moduleA would become -ImoduleA. GCC understands this -I flag | ||
| + | INC_FLAGS := $(addprefix -I, | ||
| + | |||
| + | # The -MMD and -MP flags together generate Makefiles for us! | ||
| + | # These files will have .d instead of .o as the output. | ||
| + | CPPFLAGS := $(INC_FLAGS) -MMD -MP | ||
| + | |||
| + | # The final build step. | ||
| + | $(BUILD_DIR)/ | ||
| + | $(CXX) $(OBJS) -o $@ $(LDFLAGS) | ||
| + | |||
| + | # Build step for C source | ||
| + | $(BUILD_DIR)/ | ||
| + | mkdir -p $(dir $@) | ||
| + | $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ | ||
| + | |||
| + | # Build step for C++ source | ||
| + | $(BUILD_DIR)/ | ||
| + | mkdir -p $(dir $@) | ||
| + | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@ | ||
| + | |||
| + | |||
| + | .PHONY: clean | ||
| + | clean: | ||
| + | rm -r $(BUILD_DIR) | ||
| + | |||
| + | # Include the .d makefiles. The - at the front suppresses the errors of missing | ||
| + | # Makefiles. Initially, all the .d files will be missing, and we don't want those | ||
| + | # errors to show up. | ||
| + | -include $(DEPS) | ||
| </ | </ | ||
c-programming/makefile/example.1713564018.txt.gz · آخرین ویرایش: 2024/04/20 01:30 توسط nasser
