1. 背景
VS是一个基本完整的开发工具集,其编译运行和文件导入等操作相对方便,而VS Code只是一个代码编辑器,它实质上通过Mingw-w64来实现对C/C++程序的编译和运行。现总结使用g++命令来编译运行多个.cpp文件。
2. 编译运行
2.1 单个文件
main.cpp代码:
#include <iostream>
using namespace std;
int main()
{
int m1 = 3, m2 = 6;
int sum = m1 + m2;
cout << m1 << "+" << m2 << "=" << sum << endl;
return 0;
}
g++命令:
g++ main.cpp -o main.exe && main.exe
注意:
操作系统版本不同,其终端命令可能不同,在本文中使用windows7(32位)。在windows10(64位),其终端命令可能如下所示:
g++ main.cpp -o main.exe; ./main.exe
若main.cpp不在根目录下,则需跳转到main.cpp所在目录或使用绝对地址。
cd E:\1 && g++ main.cpp -o main.exe && main.exe
g++ E:\1\main.cpp -o E:\1\main.exe && E:\1\main.exe
2.2 同一目录下的文件
main.h代码:
#include <iostream>
using namespace std;
main.cpp代码:
#include "main.h"
int main()
{
int m1 = 3, m2 = 6;
int sum = m1 + m2;
cout << m1 << "+" << m2 << "=" << sum << endl;
return 0;
}
g++命令:
g++ main.cpp -o main.exe && main.exe
sum.h代码:
#include <iostream>
using namespace std;
extern int m1, m2;
extern int sum(int x1, int x2);
sum.cpp代码:
#include "sum.h"
int m1 = 3, m2 = 6;
int sum(int x1, int x2)
{
return x1 + x2;
}
main.cpp代码:
#include "sum.h"
int main()
{
cout << m1 << "+" << m2 << "=" << sum(m1, m2) << endl;
return 0;
}
g++命令:
g++ main.cpp sum.cpp -o main.exe && main.exe
2.3 同一目录下另一文件夹中的文件
main.h代码:
#include <iostream>
using namespace std;
main.cpp代码:
#include "main_h/main.h"
int main()
{
int m1 = 3, m2 = 6;
int sum = m1 + m2;
cout << m1 << "+" << m2 << "=" << sum << endl;
return 0;
}
g++命令:
g++ main.cpp -o main.exe && main.exe
sum.h代码:
#include <iostream>
using namespace std;
extern int m1, m2;
extern int sum(int x1, int x2);
sum.cpp代码:
#include "sum.h"
int m1 = 3, m2 = 6;
int sum(int x1, int x2)
{
return x1 + x2;
}
main.cpp代码:
#include "sum/sum.h"
int main()
{
cout << m1 << "+" << m2 << "=" << sum(m1, m2) << endl;
return 0;
}
g++命令:
g++ main.cpp sum/sum.cpp -o main.exe && main.exe
2.4 另一目录下的文件
main.h代码:
#include <iostream>
using namespace std;
main.cpp代码:
#include "C:\Users\Administrator\Desktop\main_h\main.h"
int main()
{
int m1 = 3, m2 = 6;
int sum = m1 + m2;
cout << m1 << "+" << m2 << "=" << sum << endl;
return 0;
}
g++命令:
g++ main.cpp -o main.exe && main.exe
sum.h代码:
#include <iostream>
using namespace std;
extern int m1, m2;
extern int sum(int x1, int x2);
sum.cpp代码:
#include "sum.h"
int m1 = 3, m2 = 6;
int sum(int x1, int x2)
{
return x1 + x2;
}
main.cpp代码:
#include "C:\Users\Administrator\Desktop\sum\sum.h"
int main()
{
cout << m1 << "+" << m2 << "=" << sum(m1, m2) << endl;
return 0;
}
g++命令:
g++ main.cpp C:\Users\Administrator\Desktop\sum\sum.cpp -o main.exe && main.exe
3. 总结
g++与gcc是不同的。g++是C++编译器。gcc是C编译器,若想编译C++程序还需要带上“-lstdc++”。
若文件中只导入.h文件,g++命令不变。
g++ ***.cpp -o ***.exe && ***.exe
- 若文件中导入.cpp文件,需要根据.cpp文件位置需修改g++命令。
同一目录同一文件夹下:
g++ ***.cpp ***.cpp -o ***.exe && ***.exe
同一目录不同文件夹下(相对路径):
g++ ***.cpp ***\***.cpp -o ***.exe && ***.exe
不同目录下(绝对路径):
g++ ***.cpp C:\***\***\***.cpp -o ***.exe && ***.exe
- 对于文件较少,如一两个.h和.cpp文件,使用g++命令行编译比较方便。但若是文件较多,有十多个,那推荐使用Mingw-w64的bin目录下的mingw32-make.exe来编译。在makefile写下所有命令,在终端只需输入make即可运行。想简单运行makefile,可以参考Makefile文件详解一(怎么在Windows下使用Makefile文件),想深入了解,可以细读陈浩大神的文章Makefile教程(绝对经典,所有问题看这一篇足够了)。