【问题标题】:How do a specify a library file dependency for qmake in Qt?如何在 Qt 中为 qmake 指定库文件依赖项?
【发布时间】:2010-10-21 08:33:47
【问题描述】:

有一个 SomeLib.pro 文件,其中包含:

CONFIG  += debug
TEMPLATE = lib
TARGET = SomeLib
..

然后在依赖的SomeApp.pro中:

..
debug:LIBS += -lSomeLib_debug
..

如果我在 qmake 中碰了 SomeLib,如何强制 SomeApp 构建?

【问题讨论】:

  • 我正在使用 qtcreator。因此,我希望在 .pro 文件中找到解决方案。

标签: c++ qt dependencies qmake


【解决方案1】:

如果您在应包含该库的项目的上下文菜单中单击“添加库...”,QT Creator 将完成这项工作。

这些变量会自动为您配置:

  • 包含路径
  • 依赖路径
  • PRE_TARGETDEPS

另见http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html

【讨论】:

    【解决方案2】:

    我用过:

    POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
    

    它可以工作,但是很笨拙,因为必须指定库的完整路径,这对于每个操作系统/编译器都不同。

    【讨论】:

      【解决方案3】:

      在回复 Zahir 的评论时,可能值得指出的是,如果使用 DLL,则不需要在 qmake 文件中声明这种依赖关系,但如果您的 exe 依赖于静态库,则必不可少

      【讨论】:

        【解决方案4】:

        这很难看,因为您需要提供确切的库文件名,但这应该可以:

        TARGETDEPS += libfoo.a

        【讨论】:

        • 改用 PRE_TARGETDEPS。
        • 这并不难看 - 隐式地将 lib 添加到所有内容都很丑 - libzlib 有人吗?
        【解决方案5】:

        qmake 不提供此功能。

        相反,将您的应用和 lib 放在子目录中,然后在其父目录中创建一个 Makefile,如下所示:

        all: FRC
            cd Somelib && qmake && $(MAKE) 
            cd SomeApp && qmake && $(MAKE)
        
        FRC:
        

        然后总是从这个目录运行make

        【讨论】:

        • 我正在使用 qtcreator。因此,我希望在 .pro 文件中找到解决方案。
        【解决方案6】:

        这当然不可能,你说的是使用 qmake 进行反向依赖查找?所以你想要的是在你对库 A 进行更改后构建应用程序 B(以及任何其他依赖于库 A 的应用程序)?

        这有点像说如果更新了 vbrun300.dll 就重新编译所有的 Visual Basic 应用程序?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-25
          • 2011-01-18
          • 2011-03-11
          • 1970-01-01
          • 1970-01-01
          • 2016-03-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多