使用g++命令直接一次性编译多个文件

这里以简单的HelloWorld程序为例,假设我们一共有三个文件:main.cpp,HelloWorld.cpp和HelloWorld.h. 其中HelloWorld.cpp中有一个打印HelloWorld的程序并在.h文件中声明,main.cpp通过包含.h文件调用打印HelloWorld程序。 准备文件

我们可以直接在cmd命令行中输入如下命令进行编译(直接在文件夹的目录栏中输入cmd即可打开cmd并定位到该文件夹):

g++ main.cpp HelloWorld.cpp -o hello

这时就会在同一文件夹下生成一个hello.exe文件。

使用g++命令分别编译和链接

在cmd命令中依次输入如下命令:

g++ -c main.c
g++ -c HelloWorld.c
g++ main.o HelloWorld.o -o hello

可以看到在文件夹中除了生成一个hello.exe文件之外,还有前两个步骤生成的中间文件——main.o和HelloWorld.o. 如果不想要中间文件接下来还可以使用 ``del main.o HelloWorld.o`` 将中间文件删除(del是windows下的命令)。

使用makefile文件

对于一个大型的项目,里面可能有很多个文件。这时候如果每次编译都使用上面的方法显然是不切实际的。 这时候我们可以借助makefile文件,只需要写一次就可以进行多次编译,如果文件有增删直接修改makefile文件即可。 首先新建一个makefile文件(注意没有后缀名),然后用notpad++等文本编辑器在其中加入以下代码:

# 文件名: makefile
SHELL=cmd.exe
OBJS=main.o HelloWorld.o
main: $(OBJS)
        g++ -o hello $(OBJS)
main.o:main.cpp HelloWorld.h
        g++ -c main.cpp
HelloWorld.o: HelloWorld.cpp HelloWorld.h
        g++ -c HelloWorld.cpp
clean:
        del $(OBJS)

需要注意的是在windows下需要将SHELL切换到windows下的cmd,不然不能运行del命令。 我的电脑上安装的是MinGW,由于我需要使用MinGW/bin下的mingw32-make命令,所以需要将bin文件夹添加到环境变量里。 然后在cmd命令行中输入如下命令:

mingw32-make

这时候就会在文件夹中生成hello.exe文件和相关的中间文件。如果需要删除中间文件再执行如下命令即可:

mingw32-make clean

如果我们需要自动编译多个文件同时编译过后自动删除中间文件,最后给出编译完成的提示信息,我们也可以使用windows下的bat脚本。 编写bat脚本如下:

:: 文件名: make.bat
echo off
mingw32-make
echo HelloWorld编译完毕
mingw32-make clean
echo 删除中间文件完毕
 
::执行编译后的文件
hello.exe
echo 文件执行完毕

之后我们直接在cmd命令行中输入 make ,批处理文件就会自动帮我们执行相关命令并给出提示:

批处理执行结果

这样我们在编写完文件以后,只需要一个 cmd 和一个 make 就可以让编译、删除中间文件、执行输出文件自动执行了。

posted on 2017-07-03 12:06  学习时间轴  阅读(17471)  评论(0编辑  收藏  举报