• 使用gcc命令编译多个文件


    使用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 就可以让编译、删除中间文件、执行输出文件自动执行了。

  • 相关阅读:
    oracle 处理找被删掉且提交了事务的数据
    java去除下划线并首字母大写
    假数据仓库-常见数据枚举(日期、月份、周几、星期几,前导零、Excel 列号)
    自然语言处理标注工具——Brat(安装、测试、使用)
    判断当前点击位置在不在某个区域内
    java调用C#程序集
    UE使用EditorUtilityWidget完成简单的编辑器内工具
    CodeForces 230B
    mac中安装启动使用jmeter步骤
    Ubuntu中samba配置过程
  • 原文地址:https://www.cnblogs.com/yabin/p/7110485.html
Copyright © 2020-2023  润新知