C++ Qt.pro文件中的LIBS与PRE_TARGETDEPS

C++ Qt.pro文件中的LIBS与PRE_TARGETDEPS,c++,macos,qt,qmake,static-linking,C++,Macos,Qt,Qmake,Static Linking,我是Qt的新手&开始欣赏qmake在.pro文件中提供的框架。 我问题的主要目的是详细了解qmake变量“LIBS”和“PRE_TARGETDEPS”与库的静态链接之间的区别 我的QT应用程序使用一组依赖于它的C++静态库。同样,静态库之间存在相互依赖关系。每个库中都包含一个.pro文件,以支持qmake方式构建。当然,该应用程序也有一个.pro文件 现在在静态库中,如果LBistaTa依赖于LBSTATICB,其中两个都是C++库。它们都有一个.pro文件。 在libStaticA.pro中用

我是Qt的新手&开始欣赏qmake在.pro文件中提供的框架。 我问题的主要目的是详细了解qmake变量“LIBS”和“PRE_TARGETDEPS”与库的静态链接之间的区别

<>我的QT应用程序使用一组依赖于它的C++静态库。同样,静态库之间存在相互依赖关系。每个库中都包含一个.pro文件,以支持qmake方式构建。当然,该应用程序也有一个.pro文件

现在在静态库中,如果LBistaTa依赖于LBSTATICB,其中两个都是C++库。它们都有一个.pro文件。 在libStaticA.pro中用+LIBS&-l(如下所示)提及依赖关系就足够了吗? +LIBS+=-L/路径到libStaticB/-llibStaticB

或者只提到与下面这样的PRE_TARGETDEPS的依赖关系就足够了吗 +PRE_TARGETDEPS+=/path_To_libStaticB/libStaticB.a

或者我应该同时提到这两个? +PRE_TARGETDEPS+=/path_To_libStaticB/libStaticB.a +LIBS+=/path\u To\u libStaticB/libStaticB.a

LIBS和PRE_TARGETDEPS的相关性是什么

我的开发机器是osx。 在此,提前感谢您为澄清我的理解所作的任何解释

LIBS

指定要链接到项目中的库的列表。如果使用Unix-l(库)和-l(库路径)标志,则qmake会在Windows上正确处理库(即,将库的完整路径传递给链接器)。库必须存在,qmake才能找到-l库所在的目录

TARGETDEPS之前的代码

列出目标依赖的库。某些后端(例如Visual Studio和Xcode项目文件的生成器)不支持此变量。通常,这些构建工具在内部支持该变量,它对于显式列出依赖的静态库非常有用

Qt使用
PRE_TARGETDEPS
变量存储静态链接库的依赖项。它迫使您的库在每次构建应用程序时重新链接
如果没有指定此变量,并且更新并重新生成库,则程序仍将使用旧库

对于您的问题,如果您使用静态库,您应该(几乎)始终同时使用,
LIB
PRE_TARGETDEPS

引用:

同样有趣的是:

谢谢你的解释。这很有帮助