一键开关VS的release模式优化
因为我们公司的项目规模非常大了,如果日常调试使用debug模式的话,每次调试启动都要非常长的时间,因此大多数人使用release关优化的方式来进行日常开发。但是因为持续集成的存在,上传的代码要求是开启优化的,这样服务器才能打出优化后的版本。
因为上面说的这种情况,导致我们的成员进行调试的时候,经常会调试进开了优化的dll中,那么这次的调试就宣告无果了,因为开了优化之后调试模式下的变量信息都是错乱的,必须关掉调试,关闭那个dll的优化,重新编译重新下断点,非常耗时。
因此,我写了下面这个python脚本,用以方便程序员一键开关release模式下的优化。这样就可以在调试前关闭所有dll的优化,在提交前再开启所有优化了。代码如下:
import lxml
import codecs
import sys
import os
from lxml import etree
from lxml.html import clean def ProcessOneFile(filePath, bMaxSpeed):
oContent = etree.parse(filePath)
root = oContent.getroot()
ns1 = {}
ns1['tt'] = root.nsmap[None]
optimizationElements = root.xpath('//tt:ItemDefinitionGroup[contains(@Condition,"Release")]/tt:ClCompile/tt:Optimization', namespaces=ns1)
for element in optimizationElements:
element.text = 'MaxSpeed' if bMaxSpeed else 'Disabled'
oContent.write(filePath, encoding = "utf-8", pretty_print = True, method = "xml", xml_declaration=True) def searchFile(curpath, endWith, bMaxSpeed):
try:
os.chdir(curpath)
except:
return
fl = os.listdir(os.curdir)
for nFile in fl:
if os.path.isfile(nFile):
if nFile.endswith(endWith):
print(nFile)
ProcessOneFile(nFile, bMaxSpeed)
return
for nFile in fl:
if os.path.isdir(nFile):
searchFile(nFile, endWith, bMaxSpeed)
os.chdir(os.pardir) if __name__ == '__main__':
bMaxSpeed = True
if len(sys.argv) > 1:
bMaxSpeed = sys.argv[1] == "MaxSpeed"
fatherPath = os.getcwd()
searchFile(fatherPath, ".vcxproj", bMaxSpeed)
使用方式就是将这个脚本放到你想开关代码的目录里。然后这个目录和其子目录下的所有工程都会处理。为了速度我还将其编成了exe,并用如下两个bat命令行来使用。
ModifyMaxSpeed MaxSpeed
ModifyMaxSpeed Disabled
一键开关VS的release模式优化的更多相关文章
- VS中Debug模式和Release模式的区别
		
一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...
 - .Net中的Debug模式和Release模式
		
1.Debug模式和Release模式 在vs中,运行程序有两种模式:Debug和Release 在bin目录下也会生成对应的文件夹,用于存放生成的dll等文件,这两种模式的区别如下: Debug:用 ...
 - .NET中Debug模式与Release模式
		
Visual Studio 项目对程序的发布和调试版本分别有单独的配置.顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发. 如果在 Visual Studio 中创建程 ...
 - VS2005--设置Release模式下调试
		
今天初略看了下,所谓Release和Debug只是大家和编译器约定的一些生成规则而已,所以调试是无所谓Release和Debug的,只是由于生成的规则不同,可能Release的一些调试结果没Debug ...
 - vc release模式设置断点调试
		
在VC release模式做如下设置:在 工程->属性->c/c++->常规->调试信息格式选择 -> 程序数据库(/Zi) 在 工程->属性->链接器-&g ...
 - 电脑知识,一键开启Win10“超级性能模式”
		
现在主流系统以及从WIN7慢慢的转移到了WIN10,微软也为WIN10做了很多优化跟更新.今天要跟大家说的这个功能很多人肯定没有听说过.那就是WIN10的超级性能模式. 1. 大多数Win10是没有滴 ...
 - OpenCV:Debug和Release模式 && 静态和动态编译
		
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...
 - VS2015 release模式下进行debug调试
		
有时候软件发布,又不得不调试其中的某个dll模块, 这时候就需要在发布的release版本的软件中来调试其中的dll模块了. vs2015设置: 1.Release模式下右键工作属性,选择C/C++, ...
 - 解决部分在Debug模式下程序没问题但是Release模式下出现问题的方法
		
编译策略介绍 关于优化级别:GCC_OPTIMIZATION_LEVEL 描述如下 None: Do not optimize. [-O0]With this setting, the compil ...
 
随机推荐
- Spyder使用IPython Console弹出绘图窗口的设置方法
			
http://www.datastudy.cc/article/3cfc3aff3b2c5948b938456e00376276 在使用Spyder的过程中,因为它的绘图,默认是绘图在IPython窗 ...
 - ribbion的负载均衡之端口的切换
			
可以说在这里被坑了很久,终于今天在大神的指导下,成功实现了负载均衡,切换不同的端口,这里来记录下,首先来看下效果图吧: 到底是怎么实现的呢?到底是如何切换的呢? 具体来讲: 几个步骤,启动服务注册中心 ...
 - T48566 【zzy】yyy点餐
			
T48566 [zzy]yyy点餐 题目描述 yyy去麦肯士吃垃圾食品. 麦肯士有n种单点餐品(汉堡薯条鸡翅之类的).每次选择一种或者以上的餐点,且每种餐点不多于一个的话,可以认为是购买套餐.购买一个 ...
 - Spring Boot 使用properties如何多环境配置
			
当我们使用properties文件作为Spring Boot的配置文件而不是yaml文件时,怎样实现多环境使用不同的配置信息呢? 在Spring Boot中,多环境配置的文件名需要满足 ...
 - Eclipse中遇到main方法不能运行 的情况
			
java.lang.UnsupportedClassVersionError: Bad version number in .class file 造成这种过错是ni的支撑Tomcat运行的JDK版本 ...
 - bzoj千题计划115:bzoj1024: [SCOI2009]生日快乐
			
http://www.lydsy.com/JudgeOnline/problem.php?id=1024 枚举横着切还是竖着切,一边儿分多少块 #include<cstdio> #incl ...
 - noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T01、02、04
			
T01 查找最接近的元素 描述 在一个非降序列中,查找与给定值最接近的元素. 输入 第一行包含一个整数n,为非降序列长度.1 <= n <= 100000.第二行包含n个整数,为非降序列各 ...
 - HDU 4135 容斥
			
问a,b区间内与n互质个数,a,b<=1e15,n<=1e9 n才1e9考虑分解对因子的组合进行容斥,因为19个最小的不同素数乘积即已大于LL了,枚举状态复杂度不会很高.然后差分就好了. ...
 - Bootstrap简单入门
			
Bootstrap简单入门 BootStrap基本模板 <!DOCTYPE html> <html> <head> <meta charset="U ...
 - IOC轻量级框架之Unity
			
任何事物的出现,总有它独特的原因,Unity也是如此,在Unity产生之前,我们是这么做的 我们需要在一个类A中引用另一个类B的时候,总是将类B的实例放置到类A的构造函数中,以便在初始化类A的时候,得 ...