我在Makefile中有几行正在编译和生成.o
和.d
文件。我想制作两套.o
.d
,是这样的:使用Makefile和gcc重命名.o文件
name.d
name_hello.d
name.o
name_hello.o
已经找到了如何使用"$(@:.o=_hello.d)"
改变.d
的名称,但没有成功改变的.o也许我需要[email protected]
玩,但不知道如何去做吧。
下面是制作文件代码:
$(OBJECT_DIRECTORY)/%.o: %.c
# Build header dependencies
$(CC) $(CFLAGS) $(INCLUDEPATHS) -M $< -MF "$(@:.o=.d)" -MT [email protected]
$(CC) $(CFLAGS) $(INCLUDEPATHS) -M $< -MF "$(@:.o=_hello.d)" -MT [email protected]
# Do the actual compilation
$(CC) $(CFLAGS) $(INCLUDEPATHS) -c -o [email protected] $<
$(CC) $(CFLAGS) $(INCLUDEPATHS) -c -o [email protected] $< - this line i want to change
我用arm-none-eabi-gcc.exe
武器和make.exe
更新
看来,使用单独的目标是解决较受欢迎的链接比更改名称。所以,我确实为它分开了目标。但它从来没有使用过。在其他地方的Makefile中有下一行代码告诉编译器什么.o
文件使用方法:
C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=.o))
我想,我需要改变它的东西,如:
C_OBJECTS_hello = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=*_hello.o))
请告诉如何修改C_OBJECTS
为了使编译器使用*_hello.o
文件
更新2
这是C_OBJECTS
如何使用,我想C_OBJECTS
某种过滤器告诉CC
(arm-none-eabi-gcc.exe
)使用某些.o
文件。并且由于*_hello.o
文件未在过滤器中使用,因此它们也不会在其目标中生成。
## Link C and assembler objects to an .out file
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out: $(BUILD_DIRECTORIES) $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES)
$(CC) $(LDFLAGS) $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES) -o $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out
我知道,这是写在化妆的帮助,我读它,但还是没能找到答案
更新3
这是我如何修改“C_OBJECTS ',似乎这个作品:
C_OBJECTS_hello = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=_hello.o))
_但没有成功改变'.o'_ - 改变它为什么? –
我的目标是拥有* .o和* _hello.o文件。 –
http://stackoverflow.com/a/7358961/412080 –