o(* ̄︶ ̄*)o

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

VScode+CMake+MinGW编译C/C++源码

        win下使用VSCode编译C/C++源码

  新机器想使用vscode编译C/C++源码,想使用批处理文件执行编译

一.前提

  • win11
  • vscode(版本:1.89.0)
  • MinGW( 版本:MinGW-W64-builds-4.3.5) 需要将目录下的bin配置在环境变量中。
  • CMake( 版本:3.29.3 ) 注意选择配置环境变量,或者自己手动配置

  在命令提示符中(运行-cmd),检查如下相关命令是否安装成功

g++ -v
gcc -v
cmake -version

  打开vscode安装如下几个插件

  1.   C/C++
  2.   C/C++ Extension Pack
  3.   CMake
  4.        CMake Tools

                  

二.准备文件目录

  

  •   bin 存放可执行文件
  •   build_path 执行cmake相关命令文件
  •   build_path/build 构建文件目录及生成的makefile文件
  •   build_path/cfg 存放CMake的配置文件CMakeLists.txt
  •   lib 存放静态库文件目录
  •   src 源码目录
  •   test 单元测试目录

三.创建CMake配置文件(CMakeLists.txt)

   将如下内容保存在CMakeLists.txt中

#指定cmake版本,与安装版本有关,若版本太低,会提示支持的最低版本
cmake_minimum_required(VERSION 3.5.0)

#CMAKE_BINARY_DIR 是指执行CMake构建的目录即 " build_path/build " #设置相关系统
/自定义变量, 后续通过${变量名} 来调用 set(CMAKE_C_COMPILER "E:/Program Files/mingw64/bin/gcc.exe") #编译c源码 set(CMAKE_CXX_COMPILER "E:/Program Files/mingw64/bin/g++.exe") #编译C++源码 set(PROJECT_ROOT ${CMAKE_BINARY_DIR}/../..) #项目根路径 set(PROJECT_SOURCE_PATH ${PROJECT_ROOT}/src) #源码根路径 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_ROOT}/bin) #设置输出存放路径 #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_ROOT}/dll) #设置dll存放路径-动态库 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_ROOT}/lib) #设置lib存放路径-静态库 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_ROOT}/bin) #设置exe/dll存放路径-可执行文件路径 #打印变量 message("打印{CMAKE_BINARY_DIR}输出:" ${CMAKE_BINARY_DIR}) #设置项目名称(${PROJECT_NAME} 替代_dllname),设置版本号,设置语言类型C或CPP project(_dllname VERSION 0.1.0 LANGUAGES CXX) # 载入所有文件到ALL_SOURCES file(GLOB ALL_SOURCES ${PROJECT_SOURCE_PATH}/*.cpp ${PROJECT_SOURCE_PATH}/*.h) # 编译源码生成dll文件(使用项目名称.dll) #add_library(${PROJECT_NAME} SHARED ${ALL_SOURCES})
#生成可执行文件exe
add_executable(${PROJECT_NAME} ${ALL_SOURCES})
 

 

四.创建批处理文件,完成构建与编译

   将如下代码保存在 pro_build_file.bat(批处理文件)

@echo off

rem 查看当前目录下有哪些文件
rem dir

echo "params one:" %1

rem 参数:cmake_cfg_path 设置CMakeLists.txt所在目录

rem echo 参数: cmake_cfg_filename 设置CMake的配置文件

rem 参数: cmake_build_path 设置CMake构建目录

rem 参数设置
set args=%1
set bat_cur_path=%~dp0
set disc_name=%~d0
set cmake_cfg_path=%bat_cur_path%cfg
set cmake_build_path=%bat_cur_path%build
set cmake_cfg_filename=CMakeLists.txt

echo %disc_name%   

REM 跳转至 磁盘 %disc_name%  ,若从别的磁盘执行该脚本,会在其他磁盘
%disc_name%   

rem 目录不存在
if not exist %cmake_cfg_path% (
    echo " dirname :cfg is not exist!"
    rem "exit /b" 参数/b 只关闭当前脚本,不会关闭父进程 
    exit /b

    rem mkdir cfg
)

if not exist %cmake_build_path% (
    echo " dirname :build is not exist!"
    exit /b

    rem mkdir build
)

rem 配置文件(CMakeLists.txt)不存在
if not exist %cmake_cfg_path%\%cmake_cfg_filename% (
    echo " CMakeLists.txt is not exist!"
    exit /b
)


rem 传入参数校验
if "%args%" == "_build" (
    rem 第一次构建,并编译生成
    cd %cmake_build_path%
    cmake -G "MinGW Makefiles" %cmake_cfg_path%
    mingw32-make
) else if "%args%" == "clean" ( 
    rem 清理所有构建文件
    cd %cmake_build_path%
    rem dir
    del /s /q *
    rem cmake -G "MinGW Makefiles" %cmake_cfg_path% 
    rem mingw32-make
) else if "%args%" == "build" ( 
    cd %cmake_build_path%
    cmake %cmake_cfg_path%
    mingw32-make
) else (
    cd %cmake_build_path%
    mingw32-make
)

cd %bat_cur_path%

pause

 

五. 执行批处理文件,场景

rem 打开命令提示符 输入如下代码

rem 如下第一次构建且编译    场景:未生成构建文件
pro_build_file.bat _build

rem 第二次以上构建且编译       场景:新增文件
pro_build_file.bat build

rem 清理构建文件 并构建编译,场景: 变更文件目录 等等
pro_build_file.bat clean

rem 如下:无参命令,直接编译 场景:只是修改代码
pro_build_file.bat 

六. 执行文件

打开bin目录,执行xx.exe文件

 

posted on 2024-05-30 19:20  熊本熊の熊  阅读(122)  评论(0)    收藏  举报