我正在使用makefile为boost cpp应用程序构建我的代码。当makefile执行时,它显示以下消息
g++ -c -Wall -I/c/MinGW/include/ -lboost_system -lws2_32 Timer_async.cpp -o Timer_async.o
并抛出以下错误
#include <boost/asio.hpp>
^
compilation terminated.
mingw32-make: *** [makefile:15: Timer_async.o] Error 1
但是如果我从shell提示符
运行makefile生成的命令g++ -c -Wall -I/c/MinGW/include/ -lboost_system -lws2_32 Timer_async.cpp -o Timer_async.o
程序正确构建。
我的make文件是
CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lboost_system -lws2_32
INCLUDES=-I/c/MinGW/include/
SOURCES=Timer_async.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(SOURCES) $(INCLUDES) $(LDFLAGS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $(INCLUDES) $(LDFLAGS) $< -o $@
答案 0 :(得分:0)
为什么同时指定$(SOURCES)
和$(EXECUTABLE)
作为依赖关系?什么是添加$(EXECUTABLE)
规则未实现?
#include
失败(这是诊断消息似乎表明的内容),因为无法找到目标文件。您错误地使用了-I
标记。这只会影响includedFile.c
的位置;它对<includedFile.c>
没有影响。
您的结论“未执行Makefile命令”(我不知道“Makefile命令”是什么)是没有根据的。 make
完全符合预期。
答案 1 :(得分:0)
我认为错误可能是conemu如何处理文件路径。将make文件更改为以下更具体的
之后max
我仍然遇到错误,但在路径中添加双引号后,所有错误都得到纠正。
我修改过的make文件是
CFLAGS = -c -I/c/MinGW/include
2
3 hello: Timer_async.o
4
5 Timer_async.o: Timer_async.cpp
6 g++ $(CFLAGS) Timer_async.cpp
7
8 clean:
9 rm Timer_async.o