[笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?

我平时创建新的Nios II工程时,都是选择从空模板创建app+bsp工程(图1、图2)。

image 图1

image 图2

有时候,我直接从其他工程里或文件夹复制c,然后直接粘贴到我的app工程里。图3所示的main.c,就是我直接拖过来的。代码(代码1)很简单,但是编译却出现报错(图4)。

[笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?_第1张图片 图3

代码1 main.c

#include "system.h"
#include "altera_avalon_pio_regs.h"

int main(void)
{
  while(1)
  {
    IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, 0x55);
  }
  return 0;
}

[笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?_第2张图片 图4

图4的意思就是讲,我的c没有main()入口。我就奇了怪。双击打开markfile看看,原来的SRCS的列表都是空(图5)。

image 图5

我把main.c手动加入SRCS列表中。刷新一下工程,发现一个现象(图6),看,main.c左边的图标的右上角的那个圆,亮了;对比一下图3。

[笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?_第3张图片 图6

我重新编译工程,成功(图7)。

[笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?_第4张图片 图7

那么如果发现有的c或h文件,没有亮,怎么办呢?

  1. 手动修改makefile;
  2. 单击该文件,在弹出的菜单中,选择Add to Nios II Build(图8)。

[笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?_第5张图片 图8

想要去除不想引用的文件,可单击发亮的c或h文件,选择Remove from Nios II Build。

虽然乏味可陈,但是让我明白了两件事情:

  1. 如果出现图3所示错误,先查看makefile,找找main()所在的文件是否被引用。
  2. 可用手动切换某c或h是否需要引用到工程中。

你可能感兴趣的:([笔记].为何在Nios II SBTE中,直接拖放到工程文件夹的文件,编译会出错?)