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

掌握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未来工程师。

城市新区发展潜力百强榜出炉,成都东部新区蝉联全国第一12月22日,赛迪研究院城市新区发展潜力百强(2022)榜单出炉。成都东部新区位居榜首,蝉联全国第一。这个榜单是如何出炉的?成都东部新区为什么能蝉联全国第一?红星新闻记者第一时间采物联网集群擦亮城市名片(产经观察关注数字产业集群)来源人民日报近三年,江苏无锡物联网产业营收平均增速超20物联网集群擦亮城市名片(产经观察关注数字产业集群)锡山国家级车联网先导区核心区进行开放道路测试。雨田摄农用无人机在无锡莲花荡高德纳联手卡奥斯,万字白皮书关注工业互联网赋能城市发展城市是一门科学,它像人体一样有经络脉搏肌理。随着以数字技术为主导的新一轮科技革命加速演进,推动城市数字化转型发展正成为国内外先进城市的共同选择。在此过程中,作为新一代信息技术与工业完成171亿元销售,新世界中国将继续重仓内地核心城市记者孙梅欣编辑临近年末,房企年度销售业绩正在陆续呈现。新世界发展近期公布的业绩显示,2022财年(2021年7月1日至2022年6月30日)内地整体物业合同销售额达到人民币171亿建设Web3,现在最需要Web2的移民?Web3处在大规模应用爆发的前夜从某种意义上看,人们在期待一场熊市。在经历过3年的狂暴牛市之后,2022年,加密货币行业逐渐进入熊市比特币单价从最高的6万9千美元跌落到现在的1万7中国人力资本指数报告发布,全国劳动力人口平均年龄升至39岁中央财经大学人力资本与劳动经济研究中心近日发布了中国人力资本报告2022,公布了我国最新的人力资本估算结果。2001至2020年,全国劳动力人口的平均受教育年限从8。4年上升到了1华为手机这4大经典功能实用到爆!iPhone用户实名羡慕!根据研究机构StrategyAnalytics近期发布的最新报告预测,今年HarmonyOS手机全球份额将达到2,正式开启与iOSAndroid三分天下的局面。从2019年到现在,挡不住了!中国版芯片标准出炉,美媒我们封锁了寂寞众所周知,由于美国不断的针对和极限施压,我国半导体芯片产业近些年遭遇了前所未有的发展瓶颈,从EDA设计工具架构体系等芯片上游产业,乃至光刻机光刻胶等核心制造设备材料,国内市场都面临中国联通与中兴通讯签约成立泛在智联产业联盟腾讯启动碳LIVE创新平台晚报编辑整理StevenLee排版StevenLee动点科技着重关注可持续发展生命科学消费科技科技出海四大领域的发展,现每天发布动点晚报,收集整理全球行业资讯,希望与您共同关注全球科技中国女首富财富缩水杨惠妍套现地产股贱卖丨氪金房地产作者王晗玉编辑潘心怡封面来源视觉中国在供应端应出尽出,行业迎来政策拐点之后,地产需求端或将开始发力。12月1516日,中央经济工作会议在北京举行。在房地产方面,会议除提出有效防范化中国高校92吉林省民办教育大亨李树峰的商业帝国!在吉林省,提到李树峰,可能有些人不知道他是谁。但是,要是说长春财经学院长春早期教育学院,很多人都会知晓。李树峰就是学校的法人,实际掌控人。今天,每日汉字就和大家聊聊吉林教育大亨李树
河南村镇银行最新动态钱还没有到账?最全保姆式操作指南来啦各位粉丝大大和朋友们,大家下午好!昨晚,笨笨熊以自己的亲身经历为案例,说明了垫付申请提交后钱迟迟不到账的原因绑定卡被降为二类卡或原本就是二类卡。文章发出后,不少小伙伴私信笨笨熊,诉载11吨弹药的乌克兰飞机坠毁发生大爆炸!惊动军事原子能专家路透社于2022年7月17日报道,一架乌克兰飞机于16日夜间在希腊北部坠毁,残骸中爆炸声不断,希腊军事专家,甚至原子能委员会的专家都莅临现场,却一时担心再次爆炸而不敢过于靠近,据消看,那个中国人在飞位于美国俄勒冈州的尤金市,被誉为美国的田径之乡,同时它也堪称中国田径选手的一方福地这里见证过110米栏名将刘翔跑出12秒87见证过百米飞人苏炳添首次跑进十秒大关见证过跳高名将张国伟CBA辽沪等球队外援均已确定,广东仍在观望,拿什么进四强CBA休赛期已过去将近一半,目前联盟看似风平浪静,实则暗流涌动,几大豪强都在暗中较劲,新赛季大有一较高下的意思,辽宁无疑被当成假想敌,打败辽宁是几大豪门不变的目标,如今辽沪京等球队中国避暑城市的天花板夏季均温19C,无需空调和风扇,生活安逸说起中国最好的避寒城市,所有人都会说是三亚,说起中国最好的避暑城市,我听过最多的答案则是六盘水。如果说三亚是为避寒而生,那么六盘水则是为避暑而生。六盘水绝对是中国避暑城市的天花板,网红提子翻车,疑似用保护动物噬人鲨做美食,本人连夜清空视频近年来,随着短视频的崛起,出现了一大批网红,有人拍段子,有人男扮女装,有人则是靠着拍美食走红网络。近日,拥有百万粉丝的网红提子就翻车了,有网友发现,她在最新的视频中,疑似用濒危动物7月10日,在天安门,一米六八的女儿单手扛起一米五的父亲看升旗2022年7月10日,在北京天安门广场的升国旗仪式上,一米六八的女儿单手扛起一米五的父亲放在肩膀上看升国旗。父亲的脸上洋溢着幸福的笑容,女儿也是满脸的激动,这是让无数人泪目的一幕。神奇的国度下的神奇飞行器印度会跳舞又会飞的大象直升机印度真是一个神奇的国度,在1970年代时,便有了舞动的大象直升机的说法。这也是世界上首架此类直升机升空。这个神奇的飞行器旨在展示印度的军事实力工业技术和国家的文化多样性,而且它的传成龙!那些充满怀念的老照片,他和每一位女明星的合照留念说实在,看到这张老照片时,差点没认出来这是成龙。一头十分有特色的时髦卷,就已经够亮眼了,还在自带迷之微笑。不过,看得出来成龙很是有绅士风度了。背上,手上全都提得满满的东西。不过,不日本对中国犯下的种种罪行激励了中国人民71部队在中国人身上的实验71部队实验地731部队是日本军方的绝密单位,负责不可思议的医学和化学武器研究。在其他事情中,该单位通过在城市上空投掷受感染的设备来进行所谓的瘟疫炸弹的实伊朗男篮轻取日本,哈达迪老当益壮,东亚劲旅华而不实男篮亚洲杯C组焦点战,老牌强队伊朗迎战日本,两队的胜者将获得小组第一,直接晋级八强,此前日本的小球三分雨让人惊叹,而伊朗则拥有强大的内线优势,原本这是一场强强对话,结果伊朗三节就打
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网