在Windows控制台中不执行文件命令

时间:2016-07-13 15:14:18

标签: makefile mingw conemu

我正在使用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 $@

2 个答案:

答案 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