首页 > 其他分享 >VSCode-多文件编译执行

VSCode-多文件编译执行

时间:2022-10-28 15:34:02浏览次数:70  
标签:bin 文件 exe VSCode 编译 json tasks cpp

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

标签:bin,文件,exe,VSCode,编译,json,tasks,cpp
From: https://www.cnblogs.com/yongdaimi/p/16836258.html

相关文章

  • 解决CentOS添加新网卡后找不到网卡配置文件
    使用VMwareWorkstation虚拟机安装好CentOS7虚拟机后,添加网卡后CentOS7无网卡配置文件的问题,添加第二块网卡以后,进入CentOS7系统后,看不到网卡配置文件。进入CentOS7系统......
  • http大文件上传如何做断点续传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好......
  • Linux操作系统系列:记一次非Lvm文件系统空间扩容
    1、关闭虚拟机,更改磁盘空间大小,如下图: 2、在系统层次发现磁盘已经识别到更改的大小,如下图: 3、但是目录空间还是原来的大小,如下图:4、安装growpart工具,yuminstallcloud-u......
  • XCode Script脚本实现符号文件上传到bugly
    bugly解析错误信息需要符号文件,而符号文件每次都要手动去上传,有时候遗漏了,archive文件被删除后,想要解析出崩溃信息就很难了,所以,可以通过添加脚本,在archive完成的时候,自动上......
  • c# - mono - 调用 python 脚本 .py 文件
    c#-mono-调用python脚本.py文件一、定义命令行工具:在windows下是cmd.exe,在mac下使用bash。二、踩过的坑使用Process类,启动一个“命令行工具”,在通过向标准......
  • python-比较两个文件交集、并集、差集
    python比较两个文件交集、并集、差集#!/usr/bin/envpython2.7#coding=utf-8'''s05=set(['x','b','a'])s06=set(['c','x','e'])'''s05=set(open('/Users/.../1205.txt','r'......
  • linux跨服务器传输文件
     借鉴以下文章:sftp的用法:ChannelSftp类_zhougl996的博客-CSDN博客_channelsftpJSch-Java实现的SFTP(文件上传详解篇)-longyg-博客园(cnblogs.com)linux环境快速......
  • Osg-osg、osgb、osgt文件
    osg、其中osgb是osg的二进制格式;osgt格式是如下官网解释:OSGTfileisanOpenSceneGraphASCIISceneData.TheOpenSceneGraphisanopensourcehighperformance3D......
  • 如何读取被占用文件内容
    提问如何读取被占用文件内容解答publicoverride(boolok,stringmsg)Excute(){varpath=Path.Combine(AppDomain.CurrentDomain.BaseDirectory,$......
  • Osg-3D文件全解
    3dm【文件类型描述】Rhino3DModel【文件类型开发人员】Redway3dandothers【说明】3dm是二维和三维图形保存后存在的一种文件格式,大多数3DM文件被视为3DImageFiles......