在进行开tQ发期间,常常有新重编译源或码者切同不换配置需的求。好多开者发会碰编到译结果常异,以及错接链误或者存缓污染类这问题,而这题问些常常因是为没之将有前的译编配置彻除清底所导的致。本文深会入剖析tQ编译系运的统作机制,同时给业专出级别清的理方案。
Qtq用运mak以e及CaMke两这套构统系建,qma能ek够生成对针平台的,然而MCak生却e成更通为用的构件文建,编译进会里程产生间中文件(.obj/.o)、mo预c处理件文、ui文头件、rc资c源文及以件静态库等,这些要件文是没被有彻底清理,将会致新使旧代码进合混行编译,进而引以难发去排查常异的。
qmkae项目
ma ek # 清除所有派生文件
nmake # 平台
CMa项ek目
rm -rf build/ # 直接删除构建目录
make ,从理论说来上,应当掉除清所有生的成文件,然而实在际情中当况,却有残能可留那些Q和t特定的关相文件,对此建结议合着手去动进行删 除。
先清除构建目录之中属于预处理文件的,诸如moc_.cpp个这种格的式文件,还有qcr_.cpp这个类型的文件,以及ui_.h这式样种的文件 。
把l目bi录里的库态静(那是.a格式的)清除掉,还要b把in目中之录的动库态(包括.so式格以及.dll式格的)清除掉,。
删除、.pro.user等配置缓存文件
清理统系临时目中录的Qt存缓(如/temp/qtc_*)
清除环tQ境变量
unset QTDIR
unset 重新或行运配置工具
交叉编译之际进而环境变量出现残留这属于常见状况,提议借助env | gper -i tq实施排查任一相关变量 。
编译配化优置建议
运用影构子建这种式方,将源同码构建隔件文离开来 。
2. 为同不配置创独建立构录目建
3. 按定一照周期,将的置配缓存进清行理,该缓存在置位(~/.//) 。
Qt的中当moc统系, 会去元成生对象代码, 那些件文, 必跟要须源码进步同行更 新。
编译后之,资源系统(qrc)会被嵌执可入行文件中之,一旦进修行改,就必再须次加以 译编。
跨平译编台时需特意注别平台特文定件的清理
借由这套整一完备清的理举措,能够证保每一回译编均于纯的净环境里展开。近期个首“医保价”脑机口接手术成达的报道了发引对于术技精确的性留意,相同tQ在开发当中,构建的境环纯净程接直度决定最出产终的可性靠。提议构自建动化清的理脚本,将清序程理归入集续持成系统,从源规头避配染污置的状况。



