我是in的新手&开始欣赏qmake在.pro文件中提供的框架。我问题的主要目的是详细了解qmake变量"LIBS“和"PRE_TARGETDEPS”与库的静态链接之间的区别。
我的Qt使用了一堆它所依赖的C++静态库。同样,静态库之间也有相互依赖关系。每个库都包含一个.pro文件,以支持qmake方式的构建。当然,这个应用程序还有一个.pro文件。
现在在静态库中,如果libStaticA依赖于libStaticB,那么两者都是C++库。而且它们各自都有一个.pro文件。在libStaticA.pro和+LIBS & -l中提及依赖关系是否足够,如下所示?+LIBS += -L/path_ to _libStaticB/ -llibStaticB
还是只需提及PRE_TARGETDEPS的依赖项,如+PRE_TARGETDEPS += /path_ to _libStaticB/libStaticB.a
或者两者都要提及?+PRE_TARGETDEPS += /path_To_libStaticB/libStaticB.a +LIBS += /path_To_libStaticB/libStaticB.a
LIBS & PRE_TARGETDEPS的相关性是什么?
PS:我的开发机器是osx。谢谢您的解释,以澄清我对此的理解。
发布于 2016-06-17 11:54:34
LIBS
指定要链接到项目的库列表。如果使用Unix -l (库)和-L (库路径)标志,qmake将正确处理Windows上的库(即将库的完整路径传递给链接器)。要找到-l库所在的目录,qmake必须存在库。
PRE_TARGETDEPS
列出目标所依赖的库。有些后端(如Visual和Xcode项目文件的生成器)不支持此变量。通常,这些构建工具在内部支持这个变量,并且它对于显式列出依赖的静态库很有用。
Qt使用PRE_TARGETDEPS变量来存储静态链接库的依赖关系。它迫使您的库在每次构建应用程序时都要重新链接。
如果未指定此变量并更新和重新构建库,则程序仍将使用旧库。
对于您的问题,如果您使用静态库,则应该(几乎)始终同时使用LIB和PRE_TARGETDEPS。
报价:Qmake变量参考
同样有趣的是:向Qt项目添加库
https://stackoverflow.com/questions/37866187
复制相似问题