我只是继承了一些c++代码,这些代码是用一个包含main和其他一些函数的cpp文件编写的。还有一些.h文件包含类及其函数定义。

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


当前回答

您可以使用一个命令,假设所有需要的.cpp和.h文件都在同一个文件夹中。

g++ *.cpp *.h -Wall && ./a.out

它将同时编译和执行。

其他回答

.h文件将与编译无关…你只关心CPP文件…输入g++ filename1.cpp filename2.cpp main。cpp -o myprogram

意味着你正在编译每个CPP文件,然后将它们链接到myprogram中。

然后运行你的程序。/myprogram

现在我已经将类分离为.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也可以正确地重建由于头文件更改而需要重建的内容。

就像rebenvp说的那样:

g++ *.cpp -o output

然后对输出执行如下操作:

./output

但是更好的解决方案是使用make文件。阅读这里了解更多关于make文件的信息。

还要确保在.cpp文件中添加了所需的.h文件。

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

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

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