【Geany编辑器】如何同时编译多个C文件

文章目录

  • 前言
  • 如何编译单个C文件
    • GCC常用命令
    • Compile配置
    • Build配置
    • Execute配置
  • 如何编译多个C文件
    • 解决方案
  • 总结

前言

编辑器我用过很多种,如Visual Studio、VS Code、Pycharm、Dev c++等等,最终还是用Geany这个小巧的编辑器最顺手。它最大的优势就是轻量级,而且基本功能也挺全面的,所以一些简单的代码练习我都使用的它。

如何编译单个C文件

Geany中菜单栏有个Build图标,点开后大致长这样
【Geany编辑器】如何同时编译多个C文件_第1张图片
其中,第一栏 C commands 就是设置编译、汇编、链接等操作的地方。可以看到,底层实现实际是调用了GCC编译器完成的。这里简要介绍一下GCC常用语法。

GCC常用命令

  • 预编译:宏定义展开、头文件展开、条件编译、删除所有注释。 不做语法检查。
    • 命令gcc -E xxx.c -o xxx.i
    • 生成预编译文件,后缀 .i
    • -o 指的是输出的意思,后面指定文件名
  • 编译:将预处理文件编译成汇编文件,进行语法检查
    • 命令gcc -S xxx.i -o xxx.s
    • 生成汇编文件,后缀 .s
  • 汇编:将上一步的汇编文件转换为二进制文件。
    • 命令gcc -c xxx.s -o xxx.o
    • 生成目标文件,后缀 .o
  • 链接:将所有目标文件 + 库函数 + 启动文件生成可执行文件。
    • 命令gcc xxx.o -o xxx.exe
    • 生成可执行文件,后缀.exe
  • 执行:执行xxx.exe文件
    • 命令:xxx
    • 直接输入文件名即可执行

注意: 每个命令都代表可以从源文件(xxx.c),直接执行到当前输出格式。所以常用的一般是后两个命令。举个栗子:

 gcc -c test.c -o test.o //执行预编译+编译+汇编,直接输出test.o文件  
 gcc test.c -o test.exe  //执行预编译+编译+汇编+链接,直接输出test.exe文件

-o 后面指定生成的文件名,后缀可以省略(编译器会自动生成)。

以上命令都可以在控制台(cmd)中运行。如果抛出异常,检查两点:

  • GCC系统环境是否配置。可以直接输入gcc验证。
  • 是否在当前c文件目录下。详见cmdcd命令。

Compile配置

因此,我们回到Geany配置中,Compile所对应的命令为:gcc -Wall -c "%f"-Wall可以生成所有警告信息。-c代表这是一条汇编命令,将输入文件转换为目标文件.o%f是Geany编辑器中的替代格式,详情参考:Geany Manual,常见的列举如下:

  • %e:不带扩展名或路径的当前文件的名称。
  • %f:不带路径的当前文件的名称。

因此此处"%f"代表当前文件名称(带后缀)
小结:点击Compile图标,会进行汇编操作,在当前目录下生成目标文件.o

Build配置

相比CompileBuild用的更多一些,命令为:gcc -Wall -o "%e" "%f"。根据上文,我们可以看出这实际就是将当前文件"%f")输入,直接预编译+编译+汇编+链接生成指定的可执行文件("%e"),且文件名保持一致。

Execute配置

命令为:"./%e"./代表当前目录%e当前文件名(不带后缀),因此点击执行(Execute)会直接执行Build所生成的.exe文件。

如何编译多个C文件

上述方法只能编译单独的C文件,如果我们自己编写头文件,Geany目前的配置是无法找到头文件所对应的实现文件的。当然,直接在cmd中用GCC命令也是可以同时编译多个文件的,但本文仅讨论在Geany中的实现。

解决方案

新建一个文件夹,存放所有要编译的C文件(你也可以选择建立一个工程,点击Project -> New)。同时将Build所对应的命令更改为gcc -Wall ./*.c -o "%e",这样,只要点击Build,就会编译当前目录下所有C文件,生成对应的可执行文件了。

总结

Geany写一些脚本还是挺方便的,但在工程建立方面确实做的不是很好,至少在其他IDE中可能就会自动编译当前工程的文件。本文仅提供一种解决方案。

你可能感兴趣的:(边角知识点,编辑器,c语言,windows)