• VSCode多文件编译执行


    VSCode-配置多文件编译

    默认VSCode 只能编译单个文件,若多个文件一起编译,经常会报 undefined reference 找不到引用的错误,比如下面的问题:

    image-20221028142859782

    这个时候即使你把所有的cpp code 都放到main函数所在的cpp code 的文件夹都不行,还是会报一样的问题。

    解决方法如下

    这种情况其实只需要配置一下 .vscode 文件夹下的 tasks.json 就好了。

    默认生成的 tasks.json如下(没有tasks.json的话,就把界面点到代码的界面,然后菜单栏"Terminal"-"Configure Tasks..." 生成默认的tasks.json):

    {
    	"version": "2.0.0",
    	"tasks": [
    		{
    			"type": "cppbuild",
    			"label": "C/C++: g++.exe 生成活动文件",
    			"command": "E:\\msys64\\mingw64\\bin\\g++.exe",
    			"args": [
    				"-fdiagnostics-color=always",
    				"-g",
    				"${file}",
    				"-o",
    				"${fileDirname}\\${fileBasenameNoExtension}.exe"
    			],
    			"options": {
    				"cwd": "E:\\msys64\\mingw64\\bin"
    			},
    			"problemMatcher": [
    				"$gcc"
    			],
    			"group": {
    				"kind": "build",
    				"isDefault": true
    			},
    			"detail": "编译器: E:\\msys64\\mingw64\\bin\\g++.exe"
    		}
    	]
    }
    

    不同机器的配置可能不同,不过大概就是上述的样子,

    找到 tasks.json中的 args 选项,这个主要是用来配置待编译的文件信息的,修改如下:

    "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${workspaceFolder}\\*.cpp",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
    ],
    

    主要就是将:${file} 替换成 ${workspaceFolder}, 最终配置的结果如下:

    {
    	"version": "2.0.0",
    	"tasks": [
    		{
    			"type": "cppbuild",
    			"label": "C/C++: g++.exe 生成活动文件",
    			"command": "E:\\msys64\\mingw64\\bin\\g++.exe",
    			"args": [
    				"-fdiagnostics-color=always",
    				"-g",
    				"${workspaceFolder}\\*.cpp",
    				"-o",
    				"${fileDirname}\\${fileBasenameNoExtension}.exe"
    			],
    			"options": {
    				"cwd": "E:\\msys64\\mingw64\\bin"
    			},
    			"problemMatcher": [
    				"$gcc"
    			],
    			"group": {
    				"kind": "build",
    				"isDefault": true
    			},
    			"detail": "编译器: E:\\msys64\\mingw64\\bin\\g++.exe"
    		}
    	]
    }
    

    再次运行程序,就可以多文件正常编译了:

    image-20221028143728325

    当然上述例子中,我的main函数所在的cpp 与 其它 cpp 文件是在同一级目录下的:

    image-20221028152059537

    要是你还含有其它的二级目录,即:有些cpp 文件是在其它的二级目录下的,那就还需要修改tasks.json文件, 比如类似于这样:

    image-20221028152419400

    main函数所在test.cpp在一级目录下,其它cpp文件在 others 目录下,这个时候就需要把tasks.json改成:

    "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${workspaceFolder}\\*.cpp",
        "${workspaceFolder}\\others\\*.cpp",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
    ],
    

    无论如何,一定要确保编译器能够顺利找到这些cpp 文件的位置。

    参考链接

    微软官网上也有看到这个问题,微软给的方案是:

    Link: https://code.visualstudio.com/docs/cpp/config-mingw#_compiler-path

    image-20221028145628778

  • 相关阅读:
    公用表表达式(CTE)的递归调用
    c# 如何让tooltip显示文字换行
    实战 SQL Server 2008 数据库误删除数据的恢复
    SQL SERVER数据库中 是否可以对视图进行修改删除
    asp.net中实现文件批量上传
    sql server 2008学习2 文件和文件组
    sql server 2008学习3 表组织和索引组织
    sql server 2008学习4 设计索引的建议
    sql server 2008学习10 存储过程
    .net 调用 sql server 自定义函数,并输出返回值
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/16836258.html
Copyright © 2020-2023  润新知