使用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 ++文件。
- 假设您有5个cpp文件,您只需使用*而不是input每个cpp文件的名称,例如g ++ -c * .cpp -o myprogram。
- 这将生成“myprogram”
- 运行程序./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。 小东西。 精氨酸!