C++ 编译c++;11使用makefile编写简单的程序
获得了用c++11编写简单程序的任务,该程序包含以下文件:C++ 编译c++;11使用makefile编写简单的程序,c++,linux,compilation,makefile,C++,Linux,Compilation,Makefile,获得了用c++11编写简单程序的任务,该程序包含以下文件: main.cpp 豪斯h酒店 树 main函数显然位于main.cpp文件中。 main.cpp包含两个头文件并使用它们 当我尝试在Linux上编译时,我写道: g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog 我得到了一个可以运行的prog文件 然后我尝试使用makefile编译它,我做的是: all: g++ -std=c++11 -O2 -Wal
- main.cpp
- 豪斯h酒店
- 树
g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog
我得到了一个可以运行的prog文件
然后我尝试使用makefile编译它,我做的是:
all:
g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog
然后点击“全部制作”
遗憾的是,它不起作用。
试图在网上搜索如何正确操作,但运气不佳。
你能告诉我怎么做吗
还有,如何进行智能编译?i、 e.仅当上述文件发生更改时才进行编译
谢谢 在
Makefile
all:
<TAB>g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp -o prog
或者对于简单的情况,make
提供了一条使用默认规则的捷径。您可以编译我们的代码,而无需使用Makefile
CXXFLAGS=-std=c+=11 -Wall -pedantic -pthread make main
但是这种方法会将程序名命名为文件名,即此处的main,而不是您想要的
prog
创建一个Makefile
,只包含以下几行,并检查它:
CFLAGS += -g -O2 -Wall -W -pedantic
CXXFLAGS=$(CFLAGS) -std=c++11
CFLAGS += -pthread
LDFLAGS += -pthread
然后键入makemain
。Make将搜索其内置规则,并发现有一种方法可以从main.cpp
获取名为main
的编译程序。然后,它将执行一个内置规则,类似于:
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@
如果只想键入make
,则可以添加:
all: main
当您键入
make
时,内置的隐式规则将为您构建main
“很遗憾,它不起作用”这是什么意思?不编译?有错误吗?第二个字符串必须以tablation开头确保g++
缩进了制表符而不是空格。“如何进行智能编译?”-阅读make文档此问答不适合提供教程,并且make
需要一些时间和精力来学习。但是如果你想成为一名程序员,这是非常必要的。
all: main