【问题标题】:How to include header directory in makefile [duplicate]如何在makefile中包含头目录[重复]
【发布时间】:2017-03-17 23:08:29
【问题描述】:
    ### Compiler arguments
#CC = gcc
gcc -I/usr/lib/jvm/jdk1.8.0_121/include/jni.h
CFLAGSNO = $(EXTRA_CC_ARGS) -Wall -g -I/usr/local/include -DCLASSNAME=$(CLASSNAME)
CFLAGS   += $(CFLAGSNO)

当我尝试将它输入到 makefile 中时,我收到了这个错误:

使 TARGET=cooja 干净 ../../../platform/cooja/Makefile.cooja:74: *** 缺少分隔符(您的意思是 TAB 而不是 8 个空格?)。停止。 进程返回错误码2

我对这条线有疑问: gcc -I/usr/lib/jvm/jdk1.8.0_121/include/jni.h

根据其他帖子的说明,我遵循了这些说明:

解决问题

您可以通过将空格更改为实际的制表符来解决此问题。我用 vim 来修复我的文件。只需打开它:

$ vim makefile

然后在里面运行这个命令:

:%s/^[ ]\+/^I/

这会将所有以 1 个或多个空格开头的行替换为一个实际的制表符。

但还是不行 如何将其包含在 makefile 中?

【问题讨论】:

  • 是你完整的Makefile吗?您是如何尝试在您的 Makefile 中使用 gcc 的?

标签: makefile contiki


【解决方案1】:

您的编辑器是否使用空格而不是制表符?
GNU Make 在其 Makefile 中需要真正的制表符。

【讨论】:

    【解决方案2】:

    您可以使用 -I 标志链接标题。例如 -Icurl/,它将包含该目录中的所有标题。

    示例方式:

    INCLUDE_DIR = app/curl/include
    CFLAGS=-c -Wall -I$(INCLUDE_DIR )
    

    回答您的问题:

    错误:Makefile:8: *** 缺少分隔符(您的意思是 TAB 而不是 8个空格?)。停下来。

    这是经典问题。 Makefile 只接受制表符缩进 用 4 个空格而不是 8 个。更改编辑器的设置用于设置选项卡的内容 宽度为 4,这将解决您的问题。

    【讨论】:

    • 注释“Makefile 只接受 4 个空格而不是 8 个空格的制表符缩进。更改编辑器的设置用于将制表符宽度设置为 4,这将解决您的问题”不正确。 Make 要求配方命令以实际的 TAB 字符作为行上的第一个字符缩进,而不是空格字符。编辑器在显示 TAB 字符时显示的 width 完全无关紧要:它可以显示 1 个空格、2 个空格、4 个空格、5 个空格、8 个空格、9 个空格……重要的是第一个字符是 TAB。
    • @MadScientist:还是有问题
    猜你喜欢
    • 2014-04-28
    • 2021-01-16
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多