一键开关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 ...
随机推荐
- 关于表单中Readonly和Disabled
Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...
- day8 java基础细节回顾
java之父——James Gosling java吉祥物——duke 编译: 源文件(.java文件)-->java编译器==>.class文件 运行:类装载器-->字节码校验器- ...
- day7 方法及基础知识运用
做了一个小型的成绩管理系统.主要代码如下: /* * 功能:简易学生成绩管理系统 */package day7; import java.util.Scanner; public class Home ...
- Machine Learning Trick of the Day (2): Gaussian Integral Trick
Machine Learning Trick of the Day (2): Gaussian Integral Trick Today's trick, the Gaussian integral ...
- 深入分析tcp close与shutdown
关闭socket-close 我们知道,tcp是一种支持全双工(full-duplex)通信的的协议,也就是说建立连接的两端可以在同一个时刻发送.接受数据.在需要关闭套接字的时候,我们一般调用: in ...
- 提高PowerShell脚本效率的五个常用方法
PowerShell脚本运行慢怎么办?影响到正常企业流程正常运转怎么办?本文利用例子和数据给大家带来让PowerShell运行更快的五个常用方法.本人拙见,希望能够给大家带来一点启发~ 1. 善用命令 ...
- 网络爬虫框架Heritrix中Modules的各项说明
1)Select Crawl Scope:Crawl Scope 用于配置当前应该在什么范围内抓取网页链接.例如选择 BroadScope 则表示当前的抓取范围不受限制,选择 HostScope 则表 ...
- js延迟几秒执行
var t=setTimeout("location.reload()",5000);
- php中路径斜杠的应用,兼容win与linux
更多内容推荐微信公众号,欢迎关注: PHP中斜杠的运用 兼容win和linux 使用常量:DIRECTORY_SEPARATOR如:"www".DIRECTORY_SEPARATO ...
- weblogica 启动managed server 不用每次输入密码
[weblogic@node2 AdminServer]$ pwd /home/weblogic/Oracle/Middleware/Oracle_Home/user_projects/domains ...