windos中vscode配置cmake(自用)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文件配置(windos)

不用cmake:

如果有多个相同的头文件,在查看的时候,会按照includePath中的路径次序进行索引。
c_cpp_properties.json

{
    "configurations": [
        {
            "name": "windows-gcc-x64",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "E:/Vscode/gcc/TDM-GCC-64/bin/gcc.exe",
            "cStandard": "${default}",
            "cppStandard": "${default}",
            "intelliSenseMode": "windows-gcc-x64",
            "configurationProvider": "ms-vscode.cmake-tools"
        }
    ],
    "version": 4
}

更改launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C/C++",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "gdb.exe",
            "preLaunchTask": "compile",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
        },
    ]
}

更改tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "g++",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe"
            ],
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },
            "group": "build"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "E:/Vscode/gcc/TDM-GCC-64/bin/g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ]
}

采用cmake:

tasks.json

{
    "version": "2.0.0",
        "options": {
            "cwd": "${fileDirname}/build"
        },
        "tasks": [
            {
                "type": "shell",
                "label": "cmake",
                "command": "cmake",
                "args": [
                    "..",
                    "-G",
                    "MinGW Makefiles"
                ]
            },
            {
                "label": "make",
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "command": "make",
                "args": [
    
                ]
            },
            {
                "label": "Build",
                "dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
                "dependsOn":[
                    "cmake",
                    "make"
                ]
            }
        ]
    
    }

launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/build/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,   //此项为true,否则会出现问题
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build"
        }
        


    ]
}

CMakelist.txt(最简版本):

#Set the minimum version of CMake that can be used
cmake_minimum_required(VERSION 3.0)
#set C++ version
set(CMAKE_CXX_STANDARD 11)   //根据情况修改
# set debug
set(CMAKE_BUILD_TYPE "Debug")
#Set the project name
project(120)  #PROJECT:工程的名称,和支持的语言

#Add an executable
Add_executable(ReadAndAdd ReadAndAdd.cpp) #可执行文件的名称,和相关源文件;可以用空格或者分号加更多的文件,这样就可以同时编译多个源文件

CMakelist.txt(多个文件):

#Set the minimum version of CMake that can be used
cmake_minimum_required(VERSION 3.0)

#set C++ version
set(CMAKE_CXX_STANDARD 11)   //根据情况修改

# set debug
set(CMAKE_BUILD_TYPE "Debug")

#Set the project name
project(chapter2)  #PROJECT:工程的名称,和支持的语言

#Add include path
include_directories(src)

#Add an executable
Add_executable(BookStore BookStore.cpp src/Sales_data.h) #可执行文件的名称,和相关源文件;可以用空格或者分号加更多的文件,这样就可以同时编译多个源文件

VSCODE自带的各种路径

${workspaceFolder} :表示当前workspace文件夹路径(the path of the workspace folder that contains the tasks.json file),也即C:\Users\admin\Desktop\test

${workspaceRootFolderName}:表示workspace的文件夹名,也即test

${file}:文件自身的绝对路径,也即C:\Users\admin\Desktop\test.vscode\launch.json

${relativeFile}:文件在workspace中的路径,也即.vscode\launch.json

${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即launch

${fileBasename}:当前文件的文件名,launch.json

${fileDirname}:文件所在的文件夹路径,也即C:\Users\admin\Desktop\test.vscode

${fileExtname}:当前文件的后缀,也即.json

${lineNumber}:当前文件光标所在的行号

${env:PATH}:系统中的环境变量

官网链接:https://code.visualstudio.com/docs/editor/variables-reference

二、使用步骤

输入cmake . ,发现问题:

CMake Error at CMakeLists.txt:6 (project):
  Running


  failed with:

   系统找不到指定的文件。


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "E:/cppseries/C++prime/C-prime/cpps/11/CMakeFiles/CMakeOutput.log".

查了下发现好像是关于默认generator的问题,因为我用的是MinGW,在命令后加入-G "MinGW Makefiles"即可

即输入命令cmake . -G "MinGW Makefiles"或者使用cmake_gui更改。
然后再cmake 扩展中配https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#:%7E:text=A%20CMake%20Generator%20is%20responsible%20for%20writing%20the,what%20native%20build%20system%20is%20to%20be%20used置"MinGW Makefiles"到generator里。

输入make,发现问题2:

make : 无法将“make”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ make
+ ~~~~
    + FullyQualifiedErrorId : CommandNotFoundException
 
PS E:\cppseries\C++prime\C-prime\cpps\11\build> make
make : 无法将“make”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ make
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (make:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

在gcc\TDM-GCC-64\bin中找到mingw32-make.exe文件,目录不变直接复制粘贴,将粘贴后的文件重命名为make.exe即可。

vscode调试时,发现问题三

PS E:\cppseries\C++prime>  & 'c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-1lmouv23.din=Microsoft-MIEngine-In-1lmouv23.n5f' '--stdout=Microsoft-MIEngine-Out-tg3otpda.oqe' '--stderr=Microsoft-MIEngine-Error-wbppi5bd.kez' '--pid=MicrosbgExe=E:\Vscode\gcc\TDM-GCC-64\bin\oft-MIEngine-Pid-kzjzok3o.jcg' '--dbgExe=E:\Vscode\gcc\TDM-GCC-64\bin\gdb.exe' '--interpreter=mi'
PS E:\cppseries\C++prime>  & 'c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-jewlnqxg.0kl' '--stdout=Microsoft-MIEngine-Out-5242pmnj.jm0' '--stderr=Microsoft-MIEngine-Error-afunspl0.x05' '--pid=Microsoft-MIEngine-Pid-hnionnxy.f20' '--dbgExe=E:\Vscode\gcc\TDM-GCC-64\bin\gdb.exe' '--interpreter=mi' 
PS E:\cppseries\C++prime>  & 'c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-vlikhfh3.pzf' '--stdout=Microsoft-MIEngine-Out-ixk1tq4i.0iu' '--stderr=Microsoft-MIEngine-Error-pqqjoyah.fm2' '--pid=Microsoft-MIEngine-Pid-qtchf5la.hjm' '--dbgExe=E:\Vscode\gcc\TDM-GCC-64\bin\gdb.exe' '--interpreter=mi'  
PS E:\cppseries\C++prime>  & 'c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-1.12.4-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-pisji5pe.dbu' '--stdout=Microsoft-MIEngine-Out-10dqwlfg.wi3' '--stderr=Microsoft-MIEngine-Error-qmqvblqd.3uc' '--pid=Microsoft-MIEngine-Pid-kpl4vyvm.ir3' '--dbgExe=E:\Vscode\gcc\TDM-GCC-64\bin\gdb.exe' '--interpreter=mi' 

将 “externalConsole”: false,改为"externalConsole": true,问题解决,这个错误我相当难以理解,不过有用就行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用VSCode配置CMake时,首先需要安装CMakeVSCode插件。可以参考引用\[1\]的链接,了解如何安装和配置CMakeVSCode插件。安装完成后,可以按照以下步骤进行配置: 1. 创建一个文件夹,可以使用命令行或者VSCode的GUI界面创建。例如,使用命令行可以执行以下命令: ``` mkdir exer cd exer code . ``` 这将创建一个名为exer的文件夹,并在VSCode打开该文件夹。 2. 在VSCode使用CMake工具插件创建CMakeLists.txt文件。可以使用快捷键Ctrl+Shift+P打开VSCode的控制面板,然后输入"CMake: Quick Start",选择GCC编译器,并创建一个可执行文件。 3. 配置完成后,可以开始构建项目。有几种方式可以进行构建,可以选择其一种方式: - 打开命令面板(Ctrl+Shift+P),运行"CMake: Build"命令。 - 在底部状态栏点击"构建"按钮。 - 打开命令行窗口(快捷键Ctrl+`),输入命令`cmake --build build`。 以上是使用VSCode配置CMake的基本步骤,具体操作可以参考引用\[1\]提供的链接。祝您配置成功! #### 引用[.reference_title] - *1* [VsCode配置C++/Cmake](https://blog.csdn.net/weixin_43892514/article/details/119044159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vsCode+CMake开发环境搭建](https://blog.csdn.net/weixin_43470971/article/details/119621643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值