使用G ++编译多个.cpp和.h文件

我刚刚inheritance了一些C ++代码,这些代码是用一个包含main和其他一些函数的cpp文件编写的。 还有.h文件包含类和它们的函数定义。

到目前为止,程序是使用g++ main.cpp命令编译的。 现在我已经将类分离为.h.cpp文件了,是否需要使用makefile,还是可以使用g++ main.cpp命令?

在main.cpp之后列出所有其他cpp文件。

 g++ main.cpp other.cpp etc.cpp 

等等。

或者你可以单独编译它们。 然后将所有“.o”文件链接在一起。

要单独编译而无需链接,您需要添加-c选项:

  g++ -c myclass.cpp g++ -c main.cpp g++ myclass.o main.o ./a.out 

现在我已经将类分离为.h和.cpp文件了,是否需要使用makefile,还是仍然可以使用“g ++ main.cpp”命令?

一次编译多个文件是一个糟糕的select,如果你打算把它放到Makefile中的话。

通常在一个Makefile中(对于GNU / Make ),写下这个就足够了:

 # "all" is name of the default target, running "make" without params would use it all: executable1 # for C++, replace CC (c compiler) with CXX (c++ compiler) which is used as default linker CC=$(CXX) # tell which files should be used, .cpp -> .o make would do automatically executable1: file1.o file2.o 

这样就可以正确地重新编译需要重新编译的内容。 也可以添加一些调整来生成头文件的依赖关系 – 这样make也可以正确地重build由于头文件的变化而需要重build的东西。

如果你想要,你仍然可以直接使用g ++:

 g++ f1.cpp f2.cpp main.cpp 

其中f1.cpp和f2.cpp是其中包含函数的文件。 有关如何使用make进行构build的详细信息,请参阅优秀的GNU make文档 。

您可以使用几个g ++命令然后进行链接,但最简单的方法是使用传统的Makefile或其他构build系统:像Scons(通常比Makefiles更容易设置)。

.h文件与编译无关…你只关心cpp文件…所以键入g ++ filename1.cpp filename2.cpp main.cpp -o myprogram

意味着您正在编译每个cpp文件,然后将它们链接到myprgram中。

然后运行你的程序./myprogram

我知道这个问题已经被多年以前问过,但仍然想分享我通常编译多个c ++文件。

  1. 假设您有5个cpp文件,您只需使用*而不是input每个cpp文件的名称,例如g ++ -c * .cpp -o myprogram。
  2. 这将生成“myprogram”
  3. 运行程序./myprogram

就这样!!

我使用*的原因是,如果你有30个CPP文件,你会input所有的? 或者只是使用*符号并节省时间:)

ps仅当您不关心makefile时才使用此方法。

我曾经使用一个自定义的Makefile来编译当前目录中的所有文件,但是我必须每次将它复制到每个需要的目录中。

所以我创build了自己的工具 – Universal Compiler ,它在编译多个文件时使得这个过程变得更加简单。

〜/ In_ProjectDirectory $ g ++ coordin_main.cpp coordin_func.cpp coordin.h

〜/ In_ProjectDirectory $ ./a.out

…工作!

在Geany IDE中使用Linux Mint

当我将每个文件保存到相同的目录时,一个文件没有正确保存在目录中; coordinate.h文件。 所以,重新检查,它保存在那里作为coordin.h,而不是不正确的 – > coordin.h.gch。 小东西。 精氨酸!