目录
3. 关闭"CMake Tools 想要为此文件夹配置 IntelliSense",提示
1 使用makefile
1.1 windows
1.1.1 下载MinGW
先下载MinGW,这个可以自行百度,(注意MinGW和MinGW64是不同的,属于两个组织)将MinGW添加到系统环境变量中
更改bin目录下的mingw32-make为make,方便后续直接使用make命令调用makefile

1.1.2 下载vsCode
在Visual Studio Code - Code Editing. Redefined官网下载vsCode
1.1.3 建立文件目录
建立名为demo的文件夹,在文件夹下创建inc文件夹(用于存放.h文件)、src文件夹(用于存放.c文件)

1.1.4 打开目录
使用vsCode打开该文件夹,

1.1.5 编写makefile文件
具体见如下代码
#把不同的路径赋给相应的变量
DIR_SRC = ./src
DIR_INC = ./inc
DIR_OBJ = ./obj
DIR_BIN = ./bin
#目标名称
TARGET = main
BIN_TARGET = $(DIR_BIN)/$(TARGET)
#把./source中的所有.c文件拿出来赋给变量SRC_PATH,包括.c文件的路径
SRC_PATH = $(wildcard ${DIR_SRC}/*.c)
#去掉SRC的路径,然后把所有.c文件后缀名,改为.o,最后把这些.o文件赋给变量
OBJ = $(patsubst $(DIR_SRC)/%.c,$(DIR_OBJ)/%.o,$(SRC_PATH))
CC = gcc
# -Wall 打开所有告警
# -o0 不进行编译优化,一般使用-o2进行优化
# -I$(DIR_INC) 头文件路径
CFLAGS = -std=c99 -g -o0 -Wall -I${DIR_INC}
#$(CC) $^ -o $@ -I ${DIR_INC}
${BIN_TARGET}:${OBJ}
@if not exist $(notdir $(DIR_BIN)) md $(notdir $(DIR_BIN))
$(CC) -o ${BIN_TARGET} ${OBJ}
$(DIR_OBJ)/%.o:$(DIR_SRC)/%.c
@if not exist $(notdir $(DIR_OBJ)) md $(notdir $(DIR_OBJ))
$(CC) -c $(CFLAGS) $^ -o $@
.PHONY:clean all
# window下删除文件操作
clean:
@if exist "$(notdir $(DIR_OBJ))" rmdir /q/s "$(notdir $(DIR_OBJ))"
@if exist "$(notdir $(DIR_BIN))" rmdir /q/s "$(notdir $(DIR_BIN))"
all:
@echo ${SRC_PATH}
@echo ${OBJ}
1.1.6 配置vsCode
在vsCode界面同时按住ctrl+shift+p键,在命令里输入edit configurations,软件会新创建.vscode/c_cpp_properties.json

主要是修改成自己电脑安装的MinGW对应的gcc路径

该文件修改好了之后,鼠标放在该文件上,在菜单栏中找到“打开配置”功能,此时会自动建立一个lauch.json的文件,根据截图中的内容进行修改

在菜单中打开“配置任务功能”,会新创建task.json文件,根据文件内容进行修改即可

配置完成之后,在“新建终端”弹出的窗口中输入make会进行代码编译(或者按F5启动启动debug调试方式)
1.2 MAC
1.2.1 适配mac下的makefile
mac下的命令和windows下的命令不同,因此makefile内容如下:
#把不同的路径赋给相应的变量
DIR_SRC = ./src
DIR_INC = ./inc
DIR_OBJ = ./obj
DIR_BIN = ./bin
#目标名称
TARGET = main
BIN_TARGET = $(DIR_BIN)/$(TARGET)
#把./source中的所有.c文件拿出来赋给变量SRC_PATH,包括.c文件的路径
SRC_PATH = $(wildcard ${DIR_SRC}/*.c)
#去掉SRC的路径,然后把所有.c文件后缀名,改为.o,最后把这些.o文件赋给变量
OBJ = $(patsubst $(DIR_SRC)/%.c,$(DIR_OBJ)/%.o,$(SRC_PATH))
# gcc的名字默认被mac占用
CC = g++-11
# -Wall 打开所有告警
# -o0 不进行编译优化,一般使用-o2进行优化
# -I$(DIR_INC) 头文件路径
CFLAGS = -std=c99 -g -o0 -Wall -I${DIR_INC}
#$(CC) $^ -o $@ -I ${DIR_INC}
${BIN_TARGET}:${OBJ}
@test -d $(notdir $(DIR_BIN)) || mkdir -p $(notdir $(DIR_BIN))
$(CC) -o ${BIN_TARGET} ${OBJ}
@rm -rf $(notdir $(DIR_OBJ))
$(DIR_OBJ)/%.o:$(DIR_SRC)/%.c
@test -d $(notdir $(DIR_OBJ)) || mkdir -p $(notdir $(DIR_OBJ))
$(CC) -c $(CFLAGS) $^ -o $@
.PHONY:clean all
# window下删除文件操作
clean:
@rm -rf $(notdir $(DIR_OBJ))
@rm -rf $(notdir $(DIR_BIN))
all:
@echo ${SRC_PATH}
@echo ${OBJ}
2 使用cmake
2.1 安装cmake
自行百度,windows系统和mac系统下安装cmake的方法
2.2 电脑上必须有gcc
mac 用自带的即可
win需要下载mingw
2.3 下载cmake插件

2.4 设置cmake插件执行的cmake路径
打开vscode设置,查找 Cmake Path,设置成自己pc安装的cmake路径

2.5 编写CMakeLists.txt

cmake_minimum_required(VERSION 2.80)
#project name
project(leetcode)
#code path, all filename in director "./" are stored in DIR_TOOT_SRCS
#aux_source_directory(./src DIR_TOOT_SRCS)
file(GLOB_RECURSE DIR_TOOT_SRCS "${PROJECT_SOURCE_DIR}/src/*.cpp" "${PROJECT_SOURCE_DIR}/src/*.c")
#add head file dir
include_directories("./inc")
include_directories("./inc/ut_hash")
#enable dubug
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
#Add an executable
add_executable(leetcode ${DIR_TOOT_SRCS})
#set bin path
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# make sure to use c++ 11 not c++98
add_compile_options(-std=c++11)
2.6 CMake选择编译器
删除此文件夹下的文件,此文件存放cmake扫描到的编译器列表信息

如图所示操作,选择scan for kits

选择clang编译器即可

2.7 在状态栏中直接运行/调试

3. 关闭"CMake Tools 想要为此文件夹配置 IntelliSense",提示

在设置中,去使能即可

本文详细介绍了如何在Windows和Mac系统下使用VSCode、MinGW、cmake搭建C/C++开发环境,包括配置步骤、makefile及CMakeLists.txt编写方法。

6141

被折叠的 条评论
为什么被折叠?



