VisualStudio项目中多个同名文件处理

问题

在vs2019环境中,现在开发一个较大的C++项目,它的源文件在多个文件夹中组织(在文件系统上)。在其中两个文件夹中,有几个同名的文件。如:

.\ConsoleApplication1\JAMGEN_CONFIG_x4_test\firls.c
.\ConsoleApplication1\NoiseConfig_test\firls.c

两个firls.c中的函数名称都是一样的,只是函数实现的逻辑不一样

在VS2019工程可以多添加几个"筛选器"(虚拟文件夹),这些虚拟文件名称大致与文件所在的目录对应,这个就把文件名相同的文件隔离开了。添加的方法如下图所示:

现在的问题是,当我构建这个项目时,VS2019把目标文件放在一个单一的目录中,结果是:

.\ConsoleApplication1\Debug\firls.obj

程序编译完你可以在输出窗口看到一条警告:

提示文件firls.c已经有了,再次编译它时忽略多余的指定;此时程序并没有报错,只是编译给了警告提示;但是程序的逻辑后面一个调用firls.c里面的函数的执行结果肯定是不对的。

此时我把.\ConsoleApplication1\NoiseConfig_test\firls.c里面的函数名称改一下,换一个不同的函数名称,Debug目录还是看一样:

.\ConsoleApplication1\Debug\firls.obj

但是编译的时候出错了,如下图所示:

看来还是不行,那是因为函数名称改了,在之前编译的firls.obj找不到这个函数,链接报错了。是否有一种方法可以让MSVC根据目录(或过滤器)来创建具有惟一名称的对象文件?我想这样:

.\ConsoleApplication1\Debug\JAMGEN_CONFIG_x4_test\firls.obj
.\ConsoleApplication1\Debug\NoiseConfig_test\firls.obj

解决方案

您可以设置项目范围的“对象文件名”(配置属性->C/ c++ ->输出文件)

$(IntDir)%(RelativeDir)

具体设置如下图所示:

设置完,在编译一次,在Debug目录下,果然分目录生成.obj文件,像这样:

.\ConsoleApplication1\Debug\JAMGEN_CONFIG_x4_test\firls.obj
.\ConsoleApplication1\Debug\NoiseConfig_test\firls.obj

达到预期的效果了,注意配置的时候使用源文件的相对源文件夹。注意%,但是如果您的源文件位于您的项目目录中,其中包含..\。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8训练自定义数据集和运行参数解读

1、YOLOv8深度学习环境搭建及安装 1.1. Yolov8介绍 设置操作类型 YOLOv8模型可用于各种任务,包括检测、分割和分类。这些任务的不同之处在于它们产生的输出类型和它们要解决的特定问题。 **检测:**检测任务涉及识别和定位图像或视频中感兴趣的对象或区域。YOLO模…

多模态大模型-CogVLm 论文阅读笔记

多模态大模型-CogVLm 论文阅读笔记 COGVLM: VISUAL EXPERT FOR LARGE LANGUAGEMODELS 论文地址 :https://arxiv.org/pdf/2311.03079.pdfcode地址 : https://github.com/THUDM/CogVLM时间 : 2023-11机构 : zhipuai,tsinghua关键词: visual language model效果:(2023…

一键访问多功能数据解决方案:如何轻松构建和管理APITable智能多维表格

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台,是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

【芯片DFX】Arm调试架构篇

【芯片DFX】万字长文带你搞懂JTAG的门门道道【芯片DFX】ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析

《数据库开发实践》之触发器

一、什么是触发器? 1.概念: 简单来说触发器就是一种特殊的存储过程,在数据库服务器触发事件的时候会自动执行其SQL语句集。 2.构成四要素: (1)名称:要符合标识符命名规则 (2&am…

element ui级连选择,lazyLoad选择地区

ui文档上直接给了一函数 先试试看效果是什么,加上let id0;不然会报错 props: {lazy: true,lazyLoad (node, resolve) {let id 0;const { level } node;setTimeout(() > {const nodes Array.from({ length: level 1 })//创建一个新数组,数组长度l…

Bug升级记

2023.12.28 (1) 小程序session_key泄露隐患 核心:session_key这个字段及对应值不应该传到小程序客户端等服务器外的环境 错误操作:直接在小程序调用https://api.weixin.qq.com/sns/jscode2session并将session_key作为参数进行明文传输 正确操…

【javaweb】Tomcat 9.0中的HttpServletRequest

2023年12月28日,周四晚上 目录 什么是HttpServletRequest HttpServletRequest对象是由谁产生的 什么是HttpServletRequest HttpServletRequest 是 Java Servlet 中的接口,用于封装客户端请求的信息。它提供了访问客户端请求的方法,包括请求…

【六袆 - Framework】Flowable 引擎的介绍(1)

Flowable 框架的介绍 什么是 Flowable for by https://www.flowable.com/open-source/docs/bpmn/ch02-GettingStarted 什么是 Flowable Flowable 的介绍: 轻量级业务流程引擎: Flowable是一款用Java编写的轻量级业务流程引擎。其核心功能包括部署BPMN…

鸿蒙WebGL开发入门

WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScript代码组成的,其中使用的API可以利用用户…

使用nodejs对接arXiv文献API

GPT4.0国内站点: 海鲸AI-支持GPT(3.5/4.0),文件分析,AI绘图 要使用 Node.js 对接 arXiv 的 API,你可以使用 axios 库或者 Node.js 的内置 http 模块来发送 HTTP 请求。以下是一个简单的例子,展示了如何使用 axios 来获取 arXiv 上…

[OCR]Python 3 下的文字识别CnOCR

目录 1 CnOCR 2 安装 3 实践 1 CnOCR CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包。 工具包支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖…

基于Java+SpringBoot+vue实现图书借阅管理系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 🍅 作者主页 程序设计 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 文章目录 基于JavaSpringBootvue实现图书借阅和销售商城一体化…

相比于其他流处理技术,Flink的优点在哪?

Apache Flink 是一个开源的流处理框架,用于在高吞吐量和低延迟的情况下进行大规模数据流的处理。Flink 以其在流处理领域的性能而闻名,相比于其他流处理技术,Flink 提供了一些独特的特性和优化,使其在某些情况下更快。以下是 Flin…

elasticsearch-hadoop.jar 6.8版本编译异常

## 背景 重新编译 elasticsearch-hadoop 包; GitHub - elastic/elasticsearch-hadoop at 6.8 编译 7.17 版本时很正常,注意设置下环境变量就好,JAVA8_HOME/.... 编译 6.8 版本时(要求jdk8 / jdk9),出现…

blob文件流前端显示pdf

首先请求需要修改 responseType: ‘blob’, 需要修改 请求头 {responseType: blob,url: url,method: get,}三种方法: 1.直接处理,在新页面打开 const blob new Blob([data],{ type:application/pdf }) let url window.URL.createObjectURL(blob) wi…

集合框架(Set Map List)

1.内存层面需要针对多个数据进行存储。此时,可以考虑的容器有数组、集合类 2.数组存储多个数据方面的特点 数组一旦初始化,其长度就是确定的。 数组中的多个元素是依次紧密排列的,有序的,可重复的。 (优点)数组一旦初始化完成,其元素的类型就是确定的 int[] arrnew int[10]; a…

腾讯云轻量服务器和云服务器CVM该怎么选?区别一览

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

Qt(二):使用udp发送与接收图片

使用Qt来通过UDP协议发送和接收图片可以分为几个步骤。以下是一个基本的指南: 发送图片准备图片数据:首先,你需要将图片转换为可以在网络上传输的数据格式。通常,这涉及到将图片转换为字节数组。设置UDP套接字:在Qt中…

Java 缓存中间件

Java 缓存中间件 关键词:Spring Cache、J2Cache、JetCache 一 、JSR 107 JSR107 中制订了 Java 缓存的规范。 因此,在很多缓存框架、缓存库中,其 API 都参考了 JSR 107 规范。 img Java Caching 定义了 5 个核心接口 CachingProvider - 定义…