2016-07-13 66 views
0

我正在使用makefile为boost cpp应用程序构建我的代码。当生成文件得到执行也显示了以下消息在Windows控制台中不执行文件命令

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 

,但如果我运行这个makefile文件从shell提示符下生成的命令

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 [email protected] 

.cpp.o: 
    $(CC) $(CFLAGS) $(INCLUDES) $(LDFLAGS) $< -o [email protected] 

回答

0

为什么你同时指定$(SOURCES)$(EXECUTABLE)为依赖关系就完了吗?那是什么补充说$(EXECUTABLE)规则没有实现?

#include失败(这是诊断消息似乎表明),因为目标文件无法找到。您错误地使用了-I标志。这只会影响includedFile.c的位置;它对<includedFile.c>没有影响。

您的结论“Makefile命令未执行”(我不知道“Makefile命令”是什么)是没有根据的。 make做了它应该的。

+0

我用这个标准Makefile形式http://mrbook.org/blog/tutorials/make/并添加我的支持INCLUDE宏。 – prasad

+0

错误是从shell执行同一行,并从make执行它。所以我不认为这是由于我旗。 – prasad

0

我认为错误可能是如何conemu处理文件路径。改变后使文件以下更具体的

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 

我仍然得到错误,但在路径添加双引号中所有的错误被纠正后。

我修改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 
相关问题