专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

掌握VS项目配置进阶编译器链接器配置

  1。前言
  在上一篇基础篇中,我们主要探讨了VS的构造系统模型,了解了VS项目最基本的输入输出配置。输入输出是系统对外的功能接口,是系统最基础的部分。
  在本章的进阶篇中,我们要探讨构造系统的内部参数。内部参数用于调整构造系统的行为,这些参数主要来自构造系统中的各个工具。其中,编译器和链接器作为构造系统中最核心的工具,是和我们打交道最多的,也是本文的主要研究对象。2。配置选项
  在上一篇《掌握VisualStudio项目配置【基础篇】》中,我们主要讲解了构造系统的基本输入输出配置。基本输入输出配置包含了编译器、链接器的一小部分,剩下的部分主要是编译器链接器的运行参数配置。
  如下图所示,VS编译器参数配置,集中在CC配置页:
  VS编译器参数配置
  VS链接器相关配置,集中在链接器配置页:
  VS链接器相关配置
  可见VS的项目配置中,包含了大量的编译、链接配置选项。这些选项大多数情况下保持默认值即可,不需要开发者参与。
  但是,某些特殊的应用需求,只有通过配置编译器、链接器选项才能实现。所有在界面上进行的配置操作,最终都会转换为编译器和链接器的运行参数。点击上图中命令行标签页即可查看这些参数。3。官方释义
  下方列出了微软对于以上两个配置节点逐项解释的文档地址:CC属性页:https:learn。microsoft。comzhcncppbuildreferenceccppproppage?viewmsvc140链接器属性页:https:learn。microsoft。comzhcncppbuildreferencelinkerpropertypages?viewmsvc140
  虽然微软对每一项配置都做了解释,但总体看下来,能够看懂的寥寥无几。
  例如,在链接器属性页中,对以下配置项
  链接器配置页配置子项
  官方解释如下:
  链接器配置官方讲解
  不管是配置项本身还是官方释义,都很难看懂。之所以很难看懂,是因为我们对编译器链接器的工作原理和系统底层细节不够了解。所以接下来,我们要研究一下编译器和链接器。4。编译器和链接器4。1基础
  由源码生成可执行程序的过程分为四个阶段:预处理,编译,汇编,链接。
  由源码生成可执行程序的步骤
  其中:预处理器:用于处理源码中的预处理指令;编译器:用于将源码转换成汇编代码。VS中的编译器程序为cl。exe;汇编器:将汇编代码转换为机器码,机器码保存在目标文件中(。obj),一个源文件(。cpp)对应生成一个目标文件;链接器:用于将多个包含机器码的目标文件合成为库(。dll,。lib)或可执行程序(。exe)。VS中的链接器程序为link。exe。
  这些知识十分基础,不作过多描述。4。2进阶
  虽然在一般项目中,集成环境已经为我们做了大部分工作,修改编译器、链接器参数的应用场景比较少,但是学习编译器链接器的深入使用,对理解底层系统、拓展技能树、拓宽技术视野、增强技术储备有很大意义。
  编译器、链接器参数较多,且涉及编译原理、操作系统等底层知识,有一定的难度。很多情况下,问题本身并不难,难的是如何掌握问题背后的知识体系。所以我们要做好阅读大量资料的准备。
  微软官方文档中包含了VS编译器和链接器的参考手册:MSVC编译器参考:https:learn。microsoft。comzhcncppbuildreferencecompilingaccppprogram?viewmsvc140MSVC链接器参考:https:learn。microsoft。comzhcncppbuildreferencelinking?viewmsvc140
  上面两个参考文档,虽然直接作为教程有些牵强,但总体看下来,有以下几点使用价值:参考手册包括中文及英文原版内容,为一手文档,可以有效防止内容缺漏和误解。做技术要尽量看一手文档;在项目中遇到看不懂的配置选项时,可以在参考手册中查阅说明;从参考手册中,可以了解到编译器、链接器参数涉及到哪些对象、知识点,这是深入了解底层知识非常好的着手点。例如,从编译器的警告级别控制参数:w、W0、W1、W2、W3、W4、w1、w2、w3、w4、Wall、wd、we、wo、Wv、WX(警告级别):https:learn。microsoft。comzhcncppbuildreferencecompileroptionwarninglevel?viewmsvc140章节中可以进一步了解编译器有哪些警告、可以对警告进行哪些配置、pragmawarning指令的用法等等细化知识点。官方文档详尽程度有限,凡是遇到不懂的概念,都可以自行搜索相关资料,进一步了解其细节。
  限于篇幅,这里仅提供了研究思路,具体配置的深入讲解将放在下一篇。5。在Qt中配置编译链接参数
  我们知道,Qt可以配置不同的构建套件。在Windows上进行Qt开发时,我们通常选择VS的构建套件,即MSVC套件。VS中编译器链接器的运行参数同样可以在Qt中配置。
  在Qt的。pro文件中,使用以下qmake变量可以向编译器和链接器传递参数(或叫标志flags):
  C编译器:QMAKECC:用于指定C编译器名称或路径。QMAKECFLAGS:用于配置编译C源文件时的编译器参数,在所有构建模式下均生效。QMAKECFLAGSDEBUG:设置编译C源文件时的编译器参数,仅在Debug构建模式下生效。QMAKECFLAGSRELEASEWITHDEBUGINFO:设置编译C源文件时的编译器参数,仅在Profile构建模式下生效。QMAKECFLAGSRELEASE:设置编译C源文件时的编译器参数,仅在Release构建模式下生效。其他编译器配置相关qmake变量见qmake文档。
  C编译器:QMAKECXX:用于指定C编译器名称或路径。QMAKECXXFLAGS:用于配置编译C源文件时的编译器参数,在所有构建模式下均生效。QMAKECXXFLAGSDEBUG:设置编译C源文件时的编译器参数,仅在Debug构建模式下生效。QMAKECXXFLAGSRELEASE:设置编译C源文件时的编译器参数,仅在Release构建模式下生效。QMAKECXXFLAGSRELEASEWITHDEBUGINFO:设置编译C源文件时的编译器参数,仅在Profile构建模式下生效。其他编译器配置相关qmake变量见qmake文档。
  链接器:QMAKELFLAGS:用于配置链接器参数。QMAKELFLAGSDEBUG:用于配置链接器参数,仅在Debug构建模式下生效。QMAKELFLAGSRELEASE:用于配置链接器参数,仅在Release构建模式下生效。QMAKELFLAGSRELEASEWITHDEBUGINFO:用于配置链接器参数,仅在Profile构建模式下生效。LIBS:用于配置库搜索路径、链接程序库。其他链接器配置相关qmake变量见qmake文档。
  具体的使用细节,以Qt文档为准,参考VariablesqmakeManual:https:doc。qt。ioqt5qmakevariablereference。html。
  修改以上变量以后,如何验证修改的编译器链接器参数是否生效呢?在QtCreator中构建Qt项目时,要注意观察编译输出窗口。此窗口中包含构建过程中详细的步骤和参数。如下图所示:
  编译输出
  其中,以cl开头的命令,为编译命令,cl为编译器,后面的部分为编译器参数;以link开头的命令,为链接命令,link为链接器,后面的部分为链接器参数。
  修改qmake变量后,通过对比编译器链接器参数的变化,即可验证配置的参数是否生效。注意,修改pro文件最好执行一次qmake,以确保修改生效,原理在《掌握Qt构造系统》文章中有对应解释。
  下面举例说明。5。1示例1:添加编译参数
  语法参考:编译器命令行语法:https:learn。microsoft。comzhcncppbuildreferencecompilercommandlinesyntax?viewmsvc140
  编译器选项参考:按类别列出的编译器选项:https:learn。microsoft。comzhcncppbuildreferencecompileroptionslistedbycategory?viewmsvc140按字母顺序列出的编译器选项:https:learn。microsoft。comzhcncppbuildreferencecompileroptionslistedalphabetically?viewmsvc140
  修改。pro文件:
  禁用编译器优化:QMAKECXXFLAGSOd
  查看编译输出:
  禁用编译优化编译输出
  从编译输出可以看出,Od禁用优化选项成功传递给了编译器,且编译成功。5。2示例2:添加链接参数
  语法参考:链接器命令行语法:https:learn。microsoft。comzhcncppbuildreferencelinking?viewmsvc140linkercommandlinesyntax
  链接器选项参考:链接器选项:https:learn。microsoft。comzhcncppbuildreferencelinkeroptions?viewmsvc140
  修改。pro文件:
  打开链接器详细信息输出开关:QMAKELFLAGSVERBOSE
  查看编译输出:
  启用链接器VERBOSE编译输出
  从编译输出可以看出,Od禁用优化选项成功传递给了链接器,且编译成功,同时打印了大量链接器详细日志,这些日志对于了解链接器工作过程有帮助。
  看懂编译输出是深入Qt开发的必备技能,通过编译输出能够查看到底层构建系统的运行细节,也有助于排查一些难以定位的问题。6。结语
  由于编译器链接器内容繁多,限于篇幅,本文只进行了逻辑梳理,很多细节没有涉及。读者可以自行新建项目进行测试,修改配置,对比观察。编程必须要亲自动手实践,只有这样才能避免浮于表面,才能举一反三,完善知识细节。
  关于特定场景下的编译器链接器配置,我们会在后面的文章中细化讲解。
  本文原创发布于Qt未来工程师。

欧阳娜娜粉色纱裙展现少女气氛欧阳娜娜今年四月微博更新的一组新照片,身穿一件粉色吊带裙子,粉粉嫩嫩少女感满满!拍摄场景看起来是晚上,用了很高的曝光,有点胶片氛围。睫毛好长好翘,睫毛一簇一簇分开贴的,不会太过浓密这些精华液美白的效果明显,肤色均匀透亮感觉整个人都神清气爽这些精华液美白的效果明显,肤色均匀透亮感觉整个人都神清气爽!Valmont冰凝精华液法尔曼的冰凝系列在混油皮届那可是大名鼎鼎,对于混油熟龄肌来说,冰凝系列属于整个系列闭着眼买都不会为什么我们偏爱不良姿势?前一阵巴黎世家大秀的不知道大家有看么,就是卡戴珊被人吐槽走得像个假人这场。但这个步伐和表情主要还是和秀场主题有关其实妮可基德曼也去了,还秀了一大圈恩爱。但比起名人走秀来说,这场大秀美好的一天从戴上一块好表开始没有一劳永逸的腕表,定期保养才能让美好的腕表常相伴!和所有机械产品一样,金属与金属或宝石的摩擦,总会产生碎屑和磨损,时间长了,就成为阻碍机芯正常运作的油泥。橡胶或尼龙防水圈也会老化NBA2021届选秀大会球星故事连载(第三期)探花埃文莫布利2021年的NBA选秀成材率非常高,风头从赛季初的第13顺位杜阿尔特开始,接着第4顺位的斯科蒂巴恩斯表现惊艳众人,第6顺位的约什基迪不断刷新联盟各种最年青球员里程碑记录,第8顺位的世体巴萨依然想签AZP和阿隆索,但想要如愿面临很大的困难直播吧7月30日讯据西班牙世界体育报报道,巴萨依然希望引进切尔西的阿斯皮利奎塔和马科斯阿隆索,但想要如愿困难重重。在引进了凯西克里斯滕森拉菲尼亚莱万多夫斯基和孔德后,巴萨将引援的目梁靖崑被爆出大瓜,为什么樊振东登上热搜?和女生对视会他会害羞最近欧洲系列赛落幕,国乒主力参加了球星挑战赛和冠军赛,由于国乒一哥樊振东弃赛,国乒男队这边缺少了一个强大,马龙带着王楚钦梁靖崑林高远出战比赛,可惜的是在球星挑战赛丢掉男双冠军,在冠这还是我们熟悉的鹈鹕状元胖虎吗?胖虎啊,这顶薪合同,那真的是设置了一道又一道的难关在正式签约那会,就有消息称,保护的合同是拥有各种条款的,类似于当年恩比德的那种,需要打够场次才能把钱赚足赚够就胖虎这出勤率,想要达C罗造势游子回家2。0!门德斯一波操作尽显快准狠,曼联自愿倒贴钱关于C罗回归葡萄牙体育的新闻现在越来越明确了,在遭到了几乎所有欧洲豪门球队的拒绝之后。C罗和门德斯也发现了现在唯一的办法就是回归葡萄牙体育,因为他们也有着欧冠资格。葡萄牙体育本来在哈吉斯成长动力十足,报喜鸟多品牌协同发展,未来发展可期待(报告出品方分析师国泰君安证券张爱宁)多品牌协同助发展,股权趋稳显信心1。1。公司概况扎根服装行业,多品牌协同发展深耕服装行业多年,多品牌矩阵日益完善。公司组建于1996年,主营业15条绝美ins风项链!显锁骨显脸小!还巨便宜晚上好啊姐妹们,这里是和你们8点半准时见面的萌萌最近感觉到天气有开始慢慢凉快点了,所以你们有约着和小伙伴们出去玩吗?而且我也给你们安利了不少的貌美穿搭有没有安排上呢不过我呀最近又又
这些人小心重阳!张伯礼最新提醒不少人担心,如果新冠病毒的毒株不同,是否会再次被新冠病毒感染?据科技日报报道,近日,中国工程院院士张伯礼就二次感染的相关问题进行了解答再次感染新冠病毒的概率主要与人体免疫水平病毒株解读一汽丰田bZ4X,19。98万起,4种续航可选,家用值得入手吗?提起TNGA架构下的一汽丰田车型,不少朋友都会和运动安全以及好开联系在一起,由此也成为了诸多消费者主要考虑的选择,其实际销量成绩同样较为优异。而如今,一汽丰田为了在国内市场进一步提刘强东和马化腾,急了后来你发现他们都是骗子!在本年末京东两次高级别的经营理念视频学习会上,京东背后掌门人刘强东直接痛批少部分高管醉心于PPT的创作,而最终结果执行得一塌糊涂的行为。与此同时,腾讯创始人还在担心阳了怎么办?下面的方法赶紧收藏发热一退烧药物推荐对乙酰氨基酚布洛芬连花清瘟颗粒胶囊金花清感颗粒吲哚美辛栓洛索洛芬钠片阿司匹林泡腾片安乃近片米格来宁片去痛片羚羊角口服液紫雪胶囊。二物理降温法1。温水擦浴温水擦浴适2022年货节推荐全能本设计本哪家强?想提高生产力看这六款转眼已到年末,回顾2022一整年,各家厂商纷纷化身劳模,仅全能设计本一类就让人眼花缭乱,很多不了解笔记本市场的朋友一不小心就容易踩坑。为了方便各位想要入手全能本设计本的朋友,让自己十年最差销量年轻人怎么就不买电视了作为一个90后,小时候最开心的时候就是放学回到家里,准时打开电视看哪吒传奇成龙历险记那些精彩的动画片。长大之后,电视离我的生活反而越来越远了。租房搬家买电视不方便,没什么好看的节目什么时候发现自己不再年轻了什么时候发现自己不再年轻了前几天我看到一句话人都是会变老的。这句话用在我身上,简直再适合不过了。之前的很多时候,我总觉得自己还很年轻,可是慢慢地才发现,很多事情都已经变了,不再是当阿根廷夺冠第二功臣的大心脏,是如何练就的?记者寒冰报道本届世界杯最经典的心理战,毫无疑问就是决赛的点球大战。挪威体育学院的运动心理学教授盖伊尤德,详细解读了阿根廷门将马丁内斯面对法国队的罚球手时采用的心理战术。盖伊尤德几乎深吸一口湛江最不可错过的洗肺圣地!湛江旅游官方微信公众号关注在疫情逐步开放的今天有不少市民都成了小人除了大家都更加提高了个人防疫意识街上的空气也同时变得凝重起来仿佛大家都突然看到了病毒在空气中游荡的狰狞面目但是人是冬天要生要养肾冬至过去了,可能都会感觉到天气越来越冷了,我国在北半球,现在这个时候是太阳离我们最远的时候,也是阳气最弱阴气最盛的时候,寒从脚下生,要穿上厚厚的羽绒服,厚厚的袜子,冬天也是老年人最刘诗诗的10张美图,每张皆是珍藏版1。无法抗拒一起温柔的事物包括你建议周六晚上发,周日你有空嘛?2。山高自有可行路水深自有渡船人,就算全世界都背叛你我也会是你最后一件行李。3。午饭时间好好享受4。一起吹过晚风的人,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网