我是 makefile 的新手,我想执行几个操作。
我当前的makefile如下:
OBJECTS=radio_listener.o radio_app_comm_func.o
TARGET_EXECUTABLE=radio_listener
# Default target
all: ${TARGET_EXECUTABLE}
# Compile all required .o files this way
%.o: %.c
@echo "Compiling $<"
@gcc -c -g -m32 $< -o $@
# Compile target exe by combining all objects
${TARGET_EXECUTABLE}: ${OBJECTS}
@echo "Linking $@"
@gcc ${OBJECTS} -g -m32 -o $@
# Cleanup rule
clean:
@echo "Cleaning up..."
@rm -f *.o ${TARGET_EXECUTABLE}
@echo "Done."
.PHONY: clean all
1.假设我执行'make'。然后更改radio_app_comm_ types .h中的 MACRO 定义。
radio_app_comm_types.h 包含在radio_app_comm_func.h中。
更改 MACRO 并再次执行 'make' 后,我得到“对于 'all' 无事可做。
显然,我需要以某种方式告诉我的 Makefile,radio_app_comm_func.h 依赖于 radio_app_comm_types.h。
这个怎么做?
2.我感兴趣的第二件事,是如何使用相同的 Makefile,dor 不同的可执行文件。
目前我只有radio_listener,但我计划添加radio_control,radio_server,它们的h 文件还将包括radio_app_comm_func.h,也许还有其他一些 h 文件(以便使用它们的相关 .c 文件。
我怎样才能做到这一点?我希望实现如下流程:
a)执行make,将为每个 exe 编译所有相关文件,最后将为我创建 3 个不同的可执行文件 - radio_listener、radio_control、radio_server
b)执行make server(例如),将编译所有只需要radio_server的相关文件(包括寻找更改,比如说,在radio_app_comm_types.h中),最后将只为我创建 1 个可执行文件 - radio_server
c)执行make controller ...编译所有需要的radio_control等(我猜你明白我的意思)
如果相关的话,我正在开发 Ubuntu x64 系统。
任何帮助都感激不尽。
谢谢你。