我只是继承了一些c++代码,这些代码是用一个包含main和其他一些函数的cpp文件编写的。还有一些.h文件包含类及其函数定义。
到目前为止,该程序是使用g++ main.cpp命令编译的。现在我已经将类分离为.h和.cpp文件,我需要使用makefile还是我仍然可以使用g++ main.cpp命令?
我只是继承了一些c++代码,这些代码是用一个包含main和其他一些函数的cpp文件编写的。还有一些.h文件包含类及其函数定义。
到目前为止,该程序是使用g++ main.cpp命令编译的。现在我已经将类分离为.h和.cpp文件,我需要使用makefile还是我仍然可以使用g++ main.cpp命令?
你仍然可以直接使用g++,如果你想:
g++ f1.cpp f2.cpp main.cpp
其中f1.cpp和f2.cpp是包含函数的文件。有关如何使用make进行构建的详细信息,请参阅优秀的GNU make文档。
在main.cpp之后列出所有其他CPP文件。
ie
g++ main.cpp other.cpp etc.cpp
等等。
或者您可以单独编译它们。然后链接所有结果”。O”文件一起。
现在我已经将类分离为.h和.cpp文件,我需要使用makefile还是我仍然可以使用“g++ main.cpp”命令?
如果您打算将几个文件放入Makefile中,那么一次编译几个文件是一个糟糕的选择。
通常在Makefile (GNU/Make)中,这样写就足够了:
# "all" is the 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只正确地重新编译需要重新编译的内容。还可以添加一些调整来生成头文件依赖项——这样make也可以正确地重建由于头文件更改而需要重建的内容。
.h文件将与编译无关…你只关心CPP文件…输入g++ filename1.cpp filename2.cpp main。cpp -o myprogram
意味着你正在编译每个CPP文件,然后将它们链接到myprogram中。
然后运行你的程序。/myprogram
我曾经使用一个定制的Makefile编译当前目录中的所有文件,但是我必须每次都将它复制到我需要的每个目录中。
所以我创建了我自己的工具-通用编译器,它使编译许多文件的过程更容易。
要单独编译而不需要链接,你需要添加-c选项:
g++ -c myclass.cpp
g++ -c main.cpp
g++ myclass.o main.o
./a.out
我知道这个问题几年前就有人问过了,但我还是想分享一下我通常是如何编译多个c++文件的。
假设你有5个cpp文件,你所要做的就是使用*而不是输入每个cpp文件的名称,例如g++ -c *.cpp -o myprogram。 这会生成myprogram 运行程序。/myprogram
这就是! !
我使用*的原因是,如果你有30个cpp文件,你会全部输入吗?或者直接用*号节省时间:)
注:只有当你不关心makefile时才使用这个方法。
~/In_ProjectDirectory $ g++ coordin_main.cpp coordin_funcc .cpp coordinator .h . cn
~/In_ProjectDirectory $ ./ a.t out .
... 工作! !
使用Linux Mint和Geany IDE
当我将每个文件保存到同一目录时,一个文件没有在该目录中正确保存;坐标文件。h。重新检查,它被保存为坐标。h,而不是->坐标。h。gch。那些小事。 Arg ! !
就像rebenvp说的那样:
g++ *.cpp -o output
然后对输出执行如下操作:
./output
但是更好的解决方案是使用make文件。阅读这里了解更多关于make文件的信息。
还要确保在.cpp文件中添加了所需的.h文件。
when using compiler in the command line, you should take of the following: you need not compile a header file, since header file gets substituted in the script where include directive is used. you will require to compile and link the implementation and the script file. for example let cow.h be header file and cow.cpp be implementation file and cow.cc(c++ files can have extension .cpp, .cc, .cxx, .C, .CPP, .cp) be script file. Since gcc compiler notation for c++ file is g++, we can compile and link the files using
$g++ -g -Wall cow.cpp cow.cc -o cow.out
options '-g' and '-Wall' are for debugging info and getting warning for errors. Here cow.out is the name of the executable binary file that we can execute to run the program. it is always good to name your executable file otherwise name will be automatically given which might be confusing at times. you can also do the same by using makefiles, makefiles will detect, compile and link automatically the specified files. There are great resources for compilation using command line enter link description here