我發(fā)現(xiàn)個(gè)問(wèn)題啊,如果運(yùn)行項(xiàng)目,發(fā)現(xiàn)報(bào)錯(cuò),缺少某dll,接著你在pro文件里加上win32:LIBS += -lOpengl32(舉個(gè)例子),接著可以運(yùn)行了,接著把這行刪掉,再運(yùn)行,仍然可以,后續(xù)是不影響的。
但是當(dāng)你把build文件夾刪掉的時(shí)候,再次運(yùn)行,就會(huì)出現(xiàn)同樣的錯(cuò)誤,gpt說(shuō)是因?yàn)閙akefile已經(jīng)存在了,已經(jīng)找到了位置,后續(xù)并沒(méi)有重新生成,經(jīng)過(guò)我測(cè)試,發(fā)現(xiàn)還真是這樣的。
- 除非你刪掉build文件夾再運(yùn)行,否則就發(fā)現(xiàn)沒(méi)變動(dòng)
當(dāng)你在Qt項(xiàng)目的.pro
文件中添加win32:LIBS += -lOpengl32
,然后成功構(gòu)建項(xiàng)目后,這行配置指示鏈接器在Windows平臺(tái)上鏈接到OpenGL庫(kù)Opengl32.lib
。這個(gè)庫(kù)提供了OpenGL的標(biāo)準(zhǔn)函數(shù)實(shí)現(xiàn),對(duì)于使用OpenGL功能的應(yīng)用程序是必需的。當(dāng)你首次添加這行配置并構(gòu)建項(xiàng)目時(shí),qmake會(huì)生成相應(yīng)的Makefile,其中包含了鏈接到Opengl32.lib
的指令。這使得項(xiàng)目能夠找到OpenGL的實(shí)現(xiàn),因此可以成功運(yùn)行。
如果你在之后把這行配置刪除,但沒(méi)有刪除構(gòu)建目錄(即build
文件夾),然后重新構(gòu)建項(xiàng)目,實(shí)際上并不會(huì)重新生成Makefile(因?yàn)閝make認(rèn)為沒(méi)有必要),或者生成的Makefile仍然包含之前的配置緩存,因此鏈接到Opengl32.lib
的指令依然生效。這就是為什么刪除那行配置后項(xiàng)目仍然能夠運(yùn)行的原因。
當(dāng)你完全刪除構(gòu)建目錄后再次構(gòu)建項(xiàng)目,qmake會(huì)根據(jù)當(dāng)前的.pro
文件內(nèi)容從頭開(kāi)始生成新的Makefile。由于此時(shí).pro
文件中已經(jīng)不包含win32:LIBS += -lOpengl32
這行配置,新生成的Makefile中不會(huì)包含鏈接到Opengl32.lib
的指令,導(dǎo)致鏈接器無(wú)法找到OpenGL的實(shí)現(xiàn),因此項(xiàng)目無(wú)法運(yùn)行。
解決方案
為了確保項(xiàng)目能夠穩(wěn)定運(yùn)行,如果你的項(xiàng)目確實(shí)依賴于OpenGL庫(kù),建議在.pro
文件中保留win32:LIBS += -lOpengl32
這行配置。這樣,無(wú)論何時(shí)重新構(gòu)建項(xiàng)目,無(wú)論是否刪除了構(gòu)建目錄,項(xiàng)目都能夠找到并鏈接到必需的OpenGL庫(kù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-851216.html
此外,理解Qt構(gòu)建過(guò)程和構(gòu)建系統(tǒng)如何處理項(xiàng)目文件中的配置對(duì)于解決此類(lèi)問(wèn)題很有幫助。記住,每次更改.pro
文件后,最好是清理(Clean)然后重新構(gòu)建(Rebuild)項(xiàng)目,確保所有的配置更改都能正確反映到Makefile和最終的構(gòu)建產(chǎn)物中。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-851216.html
到了這里,關(guān)于【QT】pro文件里添加又刪除LIBS不影響運(yùn)行的原因的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!