C “如何修复”;制作:';全部';是最新错误“;在Linux上执行make命令时?

C “如何修复”;制作:';全部';是最新错误“;在Linux上执行make命令时?,c,linux,makefile,ocr,C,Linux,Makefile,Ocr,我目前正在运行一个运行OCR的代码。我已经将其他5个程序与之关联。 我必须说这不是我的代码,我是从这里下载的 我用mk扩展名重命名了makefile文件。我还用“all”和“main”之间的制表符替换了一个空格字符,并修复了“make:对“all”错误不做任何操作” 我认为预期的结果是output.txt打开。目标名称可能与输出文件名冲突 尝试在Makefile中添加以下内容: .PHONY: all main .PHONY告诉Make目标与文件不关联如果希望运行cat output.txt部

我目前正在运行一个运行OCR的代码。我已经将其他5个程序与之关联。 我必须说这不是我的代码,我是从这里下载的

我用mk扩展名重命名了makefile文件。我还用“all”和“main”之间的制表符替换了一个空格字符,并修复了“make:对“all”错误不做任何操作”


我认为预期的结果是output.txt打开。

目标名称可能与输出文件名冲突

尝试在Makefile中添加以下内容:

.PHONY: all main

.PHONY
告诉
Make
目标与文件不关联

如果希望运行
cat output.txt
部分,则应调用
测试
目标,如下所示:

make test
如果您只是执行
make
,那么将给出
all
目标,因为它在makefile中位于第一位

对于“全部”错误,无需执行任何操作

如果自上次生成程序以来未更改任何源文件,则这可能是正常的。您可能应该显示您正在使用的确切命令,以及这些命令的确切输出

您还应该为某些规则添加先决条件。一旦项目建成,缺少prereqs意味着make将无法确定目标何时过期。例如,编辑
main.c
不会触发生成。可能是这样的:

CC=gcc
PTHREAD=-lpthread
CCFLAGS=-w

all: main

main: main.c LibBMP.c skeleton.c extractor.c
    $(CC) $(CCFLAGS) -o main main.c LibBMP.c  skeleton.c extractor.c $(PTHREAD)

clean:
    rm main

test: main
    ./main ../examples/sample.bmp
    @echo 
    cat output.txt
    @echo
    cat final.txt
CFLAGS = -g -w
CCFLAGS = -I. $(CFLAGS)

main:
    $(CC) $(CPPFLAGS) $(CCFLAGS) ...

这看起来很不寻常。没有名为
CCFLAGS
的变量

main:
    $(CC) $(CCFLAGS) ...
通常,您的食谱如下所示:

CC=gcc
PTHREAD=-lpthread
CCFLAGS=-w

all: main

main: main.c LibBMP.c skeleton.c extractor.c
    $(CC) $(CCFLAGS) -o main main.c LibBMP.c  skeleton.c extractor.c $(PTHREAD)

clean:
    rm main

test: main
    ./main ../examples/sample.bmp
    @echo 
    cat output.txt
    @echo
    cat final.txt
CFLAGS = -g -w
CCFLAGS = -I. $(CFLAGS)

main:
    $(CC) $(CPPFLAGS) $(CCFLAGS) ...
使用
CFLAGS
CCFLAGS
可以做两件事。首先,它为
CFLAGS
提供了一个默认值。其次,它允许用户覆盖
CFLAGS
,同时通过
CCFLAGS
提供所需的选项

main:
    $(CC) $(CCFLAGS) ...

另请参见和。

问题到底是什么?为什么我的output.txt文件没有打开?@dublejin:为什么会打开
make
执行
all
,它只依赖于
main
,而与
output无关。txt
make
用于遍历依赖关系树并检查需要做什么。如果您对目标没有依赖关系,则不会触及目标。如果要使
test
成为目标,可以使用
maketest
。否则,
所有
目标都将被设置为madeOkay。如何使测试成为目标?