C “如何修复”;制作:';全部';是最新错误“;在Linux上执行make命令时?
我目前正在运行一个运行OCR的代码。我已经将其他5个程序与之关联。 我必须说这不是我的代码,我是从这里下载的 我用mk扩展名重命名了makefile文件。我还用“all”和“main”之间的制表符替换了一个空格字符,并修复了“make:对“all”错误不做任何操作”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部
我认为预期的结果是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。如何使测试成为目标?