我当前正在运行运行OCR的代码。我已经链接了其他5个程序。 我必须说这不是我的代码,我已经从这里https://github.com/PiotrKala/OCR?files=1
下载了它我用mk扩展名重命名了我的makefile文件。我还用'all'和'main'之间的制表符替换了空格字符,并固定了一个'make:'all'错误不做任何事情。
CC=gcc
PTHREAD=-lpthread
CCFLAGS=-w
all: main
main:
$(CC) $(CCFLAGS) -o main main.c LibBMP.c skeleton.c extractor.c $(PTHREAD)
clean:
rm main
test:
./main ../examples/sample.bmp
@echo
cat output.txt
@echo
cat final.txt
我想说的是打开output.txt的预期结果。
答案 0 :(得分:1)
如果要运行cat output.txt
部分,则应调用test
目标,如下所示:
make test
如果您只是执行make
,那么它将给all
目标,因为它首先出现在makefile中。
答案 1 :(得分:0)
目标名称可能与您的输出文件名冲突。
尝试将其添加到Makefile中
.PHONY: all main
.PHONY
告诉Make
目标未与文件关联
答案 2 :(得分:0)
对于“全部”错误,无需采取任何措施。
如果自上次构建程序以来未更改任何源文件,则这可能是正常的。您可能应该显示正在使用的确切命令以及这些命令的确切输出。
您还应该在一些规则中添加前提条件。程序一旦构建,就缺乏先决条件,这意味着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
这看起来很不正常。没有名为CCFLAGS
的变量。
main:
$(CC) $(CCFLAGS) ...
通常,您的食谱如下所示:
CFLAGS = -g -w
CCFLAGS = -I. $(CFLAGS)
main:
$(CC) $(CPPFLAGS) $(CCFLAGS) ...
使用CFLAGS
和CCFLAGS
有两件事。首先,它提供CFLAGS
的默认值。其次,它允许用户通过CFLAGS
提供必需的选项时覆盖CCFLAGS
。
另请参见GNU Make | 10.3 Variables Used by Implicit Rules和GNU Coding Standards | 7.2.3 Variables for Specifying Commands。