在c ++中快速编译

lov*_*eed 3 c++ compilation

我有一个c ++程序,它有许多功能,我为每个函数都有不同的.cpp文件.从主程序,我只提供一些参数,只需调用函数.然而,整篇文章的编译需要花费很多时间.对于每个编译,我只更改主程序中的一些参数,并保留所有功能.无论如何都要加快编译速度.

Sha*_*baz 6

您正在重新编译不必要的代码.通常IDE会自动处理此问题.否则,这取决于您编译代码的方式.例如这样的行:

g++ *.cpp
Run Code Online (Sandbox Code Playgroud)

要么

g++ -o program a.cpp b.cpp c.cpp
Run Code Online (Sandbox Code Playgroud)

非常慢,因为在每次编译时,你都会重新编译一切.

如果您正在编写Makefile,则应仔细编写它以避免重新编译.例如:

.PHONY: all
all: program

program: a.o b.o c.o
    g++ -o $@ $^ $(LDFLAGS)
%.o: %.cpp
    g++ $(CXXFLAGS) -o $@ $<
# other dependencies:
a.o: a.h
b.o: b.h a.h
c.o: c.h
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,更改c.cpp导致程序的编译c.cpp和链接.改变a.h的原因,编译a.ob.o和程序的链接.也就是说,在每个构建中,您可以编译可能的最小文件数以使程序保持最新.

旁注:编写Makefile时要小心.如果您错过了一个依赖项,您可能无法编译足够的文件,并且最终可能会遇到难以分析的分段错误(充其量).看看也以手工gcc进行-M*选择,您可以使用gcc自己产生依赖,然后include在生成的输出Makefile.

  • 他给了你一个完整的makefile示例.将它保存到一个名为`Makefile`的文件中,正确设置文件名(`func1.o`而不是`ao`或其他),查找文档,然后询问您的任何具体问题. (2认同)