我正在将Eclipse CDT项目的开发迁移到一个完全不同的系统。我试图仔细复制项目属性,但是仍然存在一些差异。该项目包含用于在LPC1758微控制器上运行FreeRTOS应用程序的代码,因此有效的编译输出为Intel HEX文件。
在新系统上,由Eclipse构建自动生成的makefile不会创建lpc1758_freertos.hex
。
这是有问题的makefile的片段:
# All Target
all: lpc1758_freertos.elf
...
# Other Targets
clean:
-$(RM) $(CC_DEPS)$(C++_DEPS)$(OBJS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS) lpc1758_freertos.elf
-@echo ' '
post-build:
-@echo 'Create binary file'
-arm-none-eabi-objcopy -O binary lpc1758_freertos.elf lpc1758_freertos.bin
-@echo ' '
这是我的旧系统中的相同代码段,也自动生成但行为正确:
# All Target
all: lpc1758_freertos.elf secondary-outputs
...
# Other Targets
clean:
-$(RM) $(CC_DEPS)$(C++_DEPS)$(OBJS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS) lpc1758_freertos.elf
-@echo ' '
post-build:
-@echo 'Create binary file'
-arm-none-eabi-objcopy -O binary lpc1758_freertos.elf lpc1758_freertos.bin
-@echo ' '
secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE)
这里的问题是未定义构建目标secondary-outputs
且未将其包含在all
目标下。当我在新的Makefile中手动进行这些更改时,lpc1758_freertos.hex
似乎可以正确构建。
如何配置Eclipse以生成生成辅助输出的makefile?我知道我可以在Eclipse中关闭自动生成文件的功能,也可以在Eclipse之外运行make
,但是我会喜欢继续使用Eclipse的自动生成文件,而不必担心secondary-outputs
被覆盖。
更多详细信息:原始系统和新系统都在运行Eclipse Neon.3版本(4.6.3),Eclipse CDT 9.2.1,GNU MCU C / C ++ ARM编译器2.2.2和EPP CPP Bundle 4.6.3。< / p>