Eclipse make:**没有规则将target`main.o';

Eclipse make:**没有规则将target`main.o';,eclipse,makefile,avr,Eclipse,Makefile,Avr,以下是Eclipse中控制台的输出: **** Build of configuration Debug for project FatFstest **** make all make: *** No rule to make target `main.o', needed by `FatFstest.elf'. Stop. 我正在尝试使用Eclipse的AVR插件构建一个项目来测试库。我首先导入了FatFs代码,然后创建了main.c文件来实现它。在我第一次尝试构建它之后,我将项目

以下是Eclipse中控制台的输出:

 **** Build of configuration Debug for project FatFstest ****

make all 
make: *** No rule to make target `main.o', needed by `FatFstest.elf'.  Stop.
我正在尝试使用Eclipse的AVR插件构建一个项目来测试库。我首先导入了FatFs代码,然后创建了main.c文件来实现它。在我第一次尝试构建它之后,我将项目的src文件夹添加到属性>AVR编译器>目录中的目录列表中,但仍然出现构建错误。有什么帮助吗

这是我的makefile:

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include src/subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(ASM_DEPS)),)
-include $(ASM_DEPS)
endif
ifneq ($(strip $(S_DEPS)),)
-include $(S_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables 
LSS += \
FatFstest.lss \

SIZEDUMMY += \
sizedummy \

AVRDUDEDUMMY += \
avrdudedummy \


# All Target
all: FatFstest.elf secondary-outputs

# Tool invocations
FatFstest.elf: $(OBJS) $(USER_OBJS)
    @echo 'Building target: $@'
    @echo 'Invoking: AVR C Linker'
    avr-gcc -Wl,-Map,FatFstest.map -mmcu=atmega328p -o"FatFstest.elf" $(OBJS) $(USER_OBJS) $(LIBS)
    @echo 'Finished building target: $@'
    @echo ' '

FatFstest.lss: FatFstest.elf
    @echo 'Invoking: AVR Create Extended Listing'
    -avr-objdump -h -S FatFstest.elf  >"FatFstest.lss"
    @echo 'Finished building: $@'
    @echo ' '

sizedummy: FatFstest.elf
    @echo 'Invoking: Print Size'
    -avr-size --format=avr --mcu=atmega328p FatFstest.elf
    @echo 'Finished building: $@'
    @echo ' '

avrdudedummy: FatFstest.elf
    @echo 'Invoking: AVRDude'
    /usr/local/CrossPack-AVR-20100115/bin/avrdude -pm328p -Uflash:w:FatFstest.hex:a
    @echo 'Finished building: $@'
    @echo ' '

# Other Targets
clean:
    -$(RM) $(OBJS)$(C_DEPS)$(ASM_DEPS)$(ELFS)$(LSS)$(AVRDUDEDUMMY)$(S_DEPS)$(SIZEDUMMY)$(S_UPPER_DEPS) FatFstest.elf
    -@echo ' '

secondary-outputs: $(LSS) $(SIZEDUMMY) $(AVRDUDEDUMMY)

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets
main.c

#include <diskio.h>
#include <ff.h>
#include <stdio.h>
 int main(void)
 {
   printf("hello world\n");
   return 0;
 }
sources.mk

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

O_SRCS := 
C_SRCS := 
S_UPPER_SRCS := 
S_SRCS := 
OBJ_SRCS := 
ASM_SRCS := 
OBJS := 
C_DEPS := 
ASM_DEPS := 
ELFS := 
LSS := 
AVRDUDEDUMMY := 
S_DEPS := 
SIZEDUMMY := 
S_UPPER_DEPS := 

# Every subdirectory with source files must be described here
SUBDIRS := \
src \
我将我的项目的src文件夹添加到目录列表中 属性>AVR编译器>目录

删除此
/Users/nathannewcomb/Documents/Puzzles/FatFstest/src
文件夹,然后再次尝试编译

在subdir.mk文件中,行:

avr-gcc -I"/Users/nathannewcomb/Documents/Puzzles/FatFstest/src" -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<"

不要把main.c放在一个目录中,把它放在它的项目顶部

这也发生在我身上,只是把main.cpp移到另一个文件夹中

我试图清理项目,但问题仍然存在,所以我删除了调试文件夹,重新编译,它工作了

引用日食-

问题2。我的控制台视图显示没有将目标设置为“X”的规则

把所有的东西都弄干净 make:*没有规则使目标“干净”。 make::没有规则将目标设置为“全部”。 默认情况下,make程序查找最常用的文件“Makefile”或“Makefile”。如果在工作目录中找不到这样的文件,或者该文件为空,或者该文件不包含命令行目标的规则(在本例中为“clean”和“all”),则通常会失败,并显示类似于所示的错误消息

如果您已经有一个有效的Makefile,您可能需要更改生成的工作目录。build命令的默认工作目录是项目的根目录。可以通过在“生成项目属性”中指定备用生成目录来更改此设置。或者,如果您的Makefile被命名为其他名称(例如buildFile.mk),您可以通过将默认的Build命令设置为make-f buildFile.mk来指定名称


如果没有有效的Makefile,请在根目录中创建一个名为Makefile的新文件。然后,您可以添加示例Makefile(如上)的内容,并根据需要对其进行修改。

您是否可以通过将Makefile减少到引发问题所需的最小值来隔离问题?目前,我们无法看到所有这些include等的内容。请检查$(OBJS)或$(USER_OBJS)是否有将main.cc编译为main.o的规则。只需在包含的所有make文件中搜索“main”,并跟踪编译“tree”,这样它就可以构建main.o。也许你得加一条规则@奥利,对不起。我刚刚发布了eclipse自动生成的makefile。你能更具体地说明你想要什么吗?内森:我的意思是,这个makefile太复杂了,这里的任何人都无法在不访问它使用的所有包含文件的情况下进行调试,也无法访问您的环境。最好是手动编辑makefile以找出问题的原因。我看到您现在已经发布了包含文件的内容。我有点困惑,因为
$(OBJS)
包含
/src/main.o
,但是您发布的错误消息只谈到
main.o
(没有路径的其余部分)。应该接受这个答案,因为这是问题所在,调试目录缓存一个makefile,需要在源文件移动后重新生成。
################################################################################
# Automatically-generated file. Do not edit!
################################################################################

O_SRCS := 
C_SRCS := 
S_UPPER_SRCS := 
S_SRCS := 
OBJ_SRCS := 
ASM_SRCS := 
OBJS := 
C_DEPS := 
ASM_DEPS := 
ELFS := 
LSS := 
AVRDUDEDUMMY := 
S_DEPS := 
SIZEDUMMY := 
S_UPPER_DEPS := 

# Every subdirectory with source files must be described here
SUBDIRS := \
src \
avr-gcc -I"/Users/nathannewcomb/Documents/Puzzles/FatFstest/src" -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<"
avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<"
# Every subdirectory with source files must be described here
SUBDIRS := \
src \