为什么Makefile不能像这样工作?

时间:2017-02-22 07:40:16

标签: gcc

我正在there学习makefile的教程。 对于Makefile 2,有正确的代码:

CC=gcc
CFLAGS=-I.

hellomake: hellomake.o hellofunc.o
     $(CC) -o hellomake hellomake.o hellofunc.o -I.

为什么它不能像这样工作:

hellomake: hellomake.o hellofunc.o
    gcc -o hellomake hellomake.o hellofunc.o -I.

以下是错误:

hellomake.c:2:10: error: 'hellomake.h' file not found with <angled> include; use
      "quotes" instead
#include <hellomake.h>
         ^~~~~~~~~~~~~
         "hellomake.h"
1 error generated.

1 个答案:

答案 0 :(得分:3)

在第一个&#34;工作&#34;你使用的makefile

$scope.chlist;
    for (i = 0; i < $scope.chlist.length; i++) 
    {  
        total += $scope.chlist[i].quecount; 
    }

    $scope.totque = total;

在将源文件编译为目标文件时将使用它,并告诉编译器(及其预先安装程序)当前目录应该添加到系统头文件目录列表中。

第二个makefile不会这样做。编译器在创建目标文件时没有额外的标志。因此编译器不会将当前目录添加到目录列表中。

第二个makefile中的CFLAGS=-I. 选项是链接时。到那时,目标文件已经创建(如果没有错误,应该已经创建),并且链接器根本不使用-I标志。