我有一个c ++程序,它有许多功能,我为每个函数都有不同的.cpp文件.从主程序,我只提供一些参数,只需调用函数.然而,整篇文章的编译需要花费很多时间.对于每个编译,我只更改主程序中的一些参数,并保留所有功能.无论如何都要加快编译速度.
您正在重新编译不必要的代码.通常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.o和b.o和程序的链接.也就是说,在每个构建中,您可以编译可能的最小文件数以使程序保持最新.
旁注:编写Makefile时要小心.如果您错过了一个依赖项,您可能无法编译足够的文件,并且最终可能会遇到难以分析的分段错误(充其量).看看也以手工gcc进行-M*选择,您可以使用gcc自己产生依赖,然后include在生成的输出Makefile.