VS CODE makefile

【零基础求问】请问一下我的VS CODE为什么下不起makefile啊?一安装就提示右下角(第一张图)。然后我手动安装之后那个文件是什么啊?(第二张图)

img


图1

img


图2

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/197985
  • 除此之外, 这篇博客: 多目录下Makefile文件的编写中的 2.然后进行源文件的展开和对应目标文件的替换(表达可能不准确,但这是我自己理解的意思),这里真的好多小细节(大坑) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    SOURCE  := $(wildcard $(SRC)/*.c)  
    OBJS    := $(patsubst %.c,$(OBJ)/%.o,$(notdir $(SOURCE))) 
    MAIN_SOURCE  := $(wildcard $(DIR)/*.c)
    MAIN_OBJS    := $(patsubst %.c,$(OBJ)/%.o,$(notdir $(MAIN_SOURCE)))

    首先看第一句,SOURCE  := $(wildcard $(SRC)/*.c)  ,此句的执行结果是将src文件夹中的所有c文件列举出来,比如./src/a.c、./src/b.c等等,中间自动用空格分开,echo $(SOURCE),应该输出./src/a.c ./src/b.c等等

    变量名为SOURCE,$var代表引用名为var的变量,wildcard意为扩展通配符(普通的通配符为%,但是在包含文件路径时%不好用,因为%只能匹配文件名),用法为$(wildcard PATTERN...),将符合PATTERN格式的所有文件列举出来,并以空格分开,此句中的PATTERN为$(SRC)/.*c,意为./src文件夹中所有.c文件,*代表任意文件名。

    第二句为可以生成的目标文件,OBJS    := $(patsubst %.c,$(OBJ)/%.o,$(notdir $(SOURCE))) ,这句话的执行结果是将所有.c文件替换成.o文件,并且放在obj目录下,即echo $(OBJS),应该输出./obj/a.o ./obj/b.o 等等,但是这句话并不真的生成.o文件,只是替换而已。

    patsubst函数以为替换通配符,用法为$(patsubst <pattern>,<replacement>,<text> ),将符合text文本中的.c文件,都替换成replacement。在此句中即是将SOURCE中的所有.c文件都替换到obj目录下的.o文件。在这里,注意pattern位置的.c不要带任何文件路径,就只用通配符%即可,之前看别的教程带有目录,我测试了一下并不对。。。去掉就好了;text中的notdir一定要加,因为前面用的是通配符%,不去掉文件目录会报错的,echo $(notdir $(SOURCE)),输出的就是 a.c b.c等等,将前面的./src/去掉了。

    第三四句和第一二句类似。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^