我已经学习C++编程接近两年了,期间一直使用一个集成开发环境(VS)来进行项目设置、自动链接等操作。我一直避免使用需要通过makefiles编译的外部库,或者至少是那些针对Linux环境/其他编译器的库。
无论如何,现在我想要使用一个非常方便的实用工具(Bob Jenkins Perfect Minimal Hash),但它要求我使用makefiles编译,而且必须使用g++编译器。
我已经下载了mingW32-make工具并尝试让它工作。目前的情况如下:
- 成功安装了minGW
- 成功调用了make工具
- 未能成功编译项目。
我得到的错误信息是:
C:\gen_progs\ph>mingw32-make
mingw32-make: *** No rule to make target
lookupa.c', needed by
lookupa.o'. Stop.
以下是makefile文件内容:
CFLAGS = -O
.cc.o:
gcc $(CFLAGS) -c $<
O = lookupa.o recycle.o perfhex.o perfect.o
const64 : $(O)
gcc -o perfect $(O) -lm
# DEPENDENCIES
lookupa.o : lookupa.c standard.h lookupa.h
recycle.o : recycle.c standard.h recycle.h
perfhex.o : perfhex.c standard.h lookupa.h recycle.h perfect.h
perfect.o : perfect.c standard.h lookupa.h recycle.h perfect.h
现在这个错误似乎是合理的,至少从我对makefile的最基本理解来看,我有所有被引用的.c和.h文件,但是我没有任何.o文件,并且似乎没有任何关于如何制作这些文件的说明。所以我的问题是:
我调用make工具的方式不对吗?还是我需要先编译对象文件?或者...我需要在makefile中添加一些内容?
再次强调,我有所有被引用的.c和.h文件。
编辑:对不起,我实际上缺失了那个特定的文件,它似乎在某个地方消失了。然而,当我把它加回去后,我现在得到的错误是:
c:\gen_progs\ph>mingw32-make
cc -O -c -o lookupa.o lookupa.c
process_begin: CreateProcess(NULL, cc -O -c -o lookupa.o lookupa.c, ...) failed.
make (e=2): The system cannot find the file specified.
mingw32-make: *** [lookupa.o] Error 2