【发布时间】:2016-04-05 10:20:40
【问题描述】:
我是 makefile 的新手。我创建了以下makefile:
CC=g++
DEBUG= -g
CFLAGS=-c -Wall -std=c++11 $(DEBUG)
all: hello
hello: ConsoleApplication1.o clock.o communication.o device_manager.o devices.o
$(CC) ConsoleApplication1.o clock.o communication.o device_manager.o devices.o
ConsoleApplication1.o: ConsoleApplication1.cpp
$(CC) $(CFGLAS) ConsoleApplication1.cpp
clock.o: clock.cpp clock.h
$(CC) $(CFGLAS) clock.cpp
communication.o: communication.cpp
$(CC) $(CFGLAS) communication.cpp
device_manager.o: device_manager.cpp
$(CC) $(CFGLAS) device_manager.cpp
devices.o: devices.cpp
$(CC) $(CFGLAS) devices.cpp
clean:
rm -rf *.o hello
我把makefile放在所有代码文件的目录下,从命令行运行“make”命令。
我遇到了很多错误,例如:
ConsoleApplication1.cpp:494:30:错误:“chrono”不是“std”的成员 mytime::duration_timer_t 计时器; ^ ConsoleApplication1.cpp:494:30:错误:‘chrono’不是‘std’的成员 ConsoleApplication1.cpp:494:55:错误:模板参数 1 无效 mytime::duration_timer_t 计时器; ^ ConsoleApplication1.cpp:494:65:错误:“;”标记之前的声明类型无效 mytime::duration_timer_t 计时器; ^ ConsoleApplication1.cpp:495:11: 错误:在‘timer’中请求成员‘set_duration’,它是非类类型‘int’ timer.set_duration(std::chrono::seconds(120)); ^ ConsoleApplication1.cpp:495:29:错误:'std::chrono' 尚未声明 timer.set_duration(std::chrono::seconds(120)); ^ ConsoleApplication1.cpp:496:16: 错误:在‘timer’中请求成员‘start’,它是非类类型‘int’ for(timer.start(); not(timer.expired());)
当我在 codeBlocks 中编译完全相同的文件代码时,它会编译,所以我猜我在 make 文件中有一些错误。 我的项目名称“general.h”中有一个头文件,它没有 cpp 文件。我应该把它也放在makefile中吗?
【问题讨论】:
-
在您的
hello标签中,您正在尝试编译.o文件。 -
-std=c+11应替换为-std=c++11 -
@Aleph0 我在我的 makefile 中做同样的事情...它们生成
.o文件很好。 -
@Aleph0- 应该是这样的。 (例如youtube.com/watch?v=aw9wHbFTnAQ)
-
我认为您还应该在某处添加指令
-o hello以创建可执行文件