c - 编译和运行任何单个 C 文件的最快方法是什么

标签 c makefile emacs spacemacs

我想在按键上编译并运行单个 c 源文件,例如 <F5> ,现在我研究了几种实现此目的的方法,其中大多数涉及使用 Makefile。但是,我在通用 Makefile 上找到的每个示例都需要编辑 TARGET 或编译工作目录中的所有源文件。这让我想到了一个问题,即我是否可以运行正则表达式并从我正在处理的任何源文件中替换 Makefile 的第一行。

  1. <F5>
    1. 用当前 <file> 更新根项目目录中的 Makefile .c 正在努力。
    2. 仅在 <file> 上运行 make

可能有一种更简单的方法可以在不编辑 Makefile 的情况下完成此操作,但我已经筋疲力尽地试图制作一个足够通用的 makefile 来完成它。

我的正则表达式会选择正确的行:

^TARGET\s[=]\s.*

最佳答案

您可以在您的项目目录中创建一个 .dir-locals.el 文件,内容如下:

((c-mode . ((eval . (setq-local compile-command
                                (format "gcc -std=c99 -Wall -Wextra -Wpedantic -Werror %s"
                                        (shell-quote-argument (file-name-nondirectory
                                                               buffer-file-name))))))))

然后您只需将 绑定(bind)到 compile,它就会执行相应的操作。

compile 做“正确的事情”意味着无论何时需要编译(或执行任何模糊的类似事件,取决于当前项目发生的情况),您都可以在所有项目中始终使用相同的命令成为)。

关于c - 编译和运行任何单个 C 文件的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622649/

相关文章:

c - 编译文件时出错 |收集 2 : error: ld returned 1 exit status

emacs - emacs 中的迷你缓冲区大小随着更改默认字体而增加

c - 在 C 中将不同的函数返回类型存储在一个 union 中

条件跳转或移动取决于未初始化的值 2D 数组

c++ - Makefile 似乎忽略了标志。为什么?

java - 在 C/Java 项目中,管理构建的合适方法是什么?

c - 如何有效克服 "u_int8_t vs uint8_t"问题

c - 中缀到后缀表达式

emacs - 如何将日历与周号作为月间文本对齐

Emacs:如何在 python 模式下自动启动 python 解释器?