如何使用Linux终端编译具有变量名的C程序?

问题描述 投票:1回答:3

是否有比运行整个命令更有效的方式来编译C程序。

gcc -g -Wall file_name.c -o file_name.out

例如,以这种方式使用make命令:make argument.c

我希望make命令运行此命令gcc -g -Wall argument.c -o argument_no_extension.out

我曾尝试学习vim,但是要编译程序,我必须写下整个命令或必须使用箭头键再次运行它。但是vs代码task.json具有以下参数:

"gcc","-g", "${relativeFile}", "-o","${fileBasenameNoExtension}.out", "&&", "clear" , "&&" , "./${fileBasenameNoExtension}.out"
c linux makefile
3个回答
2
投票

如评论中所述,您已经可以做

make file_name

并且它将使用默认的构建规则(因此您甚至不需要Makefile),如果有一个名为“ file_name.c”的C源文件,则构建一个名为“ file_name”的可执行文件。

如果确实需要可执行文件具有.out扩展名,则可以创建一个如下所示的Makefile:>

CFLAGS=-g -Wall

%.out: %.c
        $(CC) $(CFLAGS) -o $@ $^

这定义了一个规则,对于以“ .out”结尾的任何内容,它将根据相应的“ .c”文件进行构建。因此,如果您键入

make file_name.out

如上所述,如果您有“ file_name.c”,它将建立“ file_name.out”

只需创建一个Makefile,其中应包含您显示的命令

gcc -g -Wall file_name.c -o file_name.out

将此Makefile放在源代码所在的目录中。然后打开命令行并将目录更改为此Makefile所在的位置。

然后执行此命令

make

无需提供make argument.c

您可以创建类似于以下内容的Makefile:

CFLAGS := -Wall -Wextra -Wconversion -pedantic -std=gnu11 -ggdb

%.out : %$(parm).c
    cc  $(CFLAGS) $^ -o $@

然后运行用于特定* .c文件的Makefile:

make -Dparm=<desired file name>

0
投票

只需创建一个Makefile,其中应包含您显示的命令


0
投票

您可以创建类似于以下内容的Makefile:

© www.soinside.com 2019 - 2024. All rights reserved.