Qt 使用 pkg-config 吗

问题描述 投票:0回答:1

Qt 使用

pkg-config
吗?

如果没有,找到

Automake & friends
项目的 Qt 安装位置的最佳方法是什么?

我的项目基于Autotools,Makefile是由Anjuta生成的。

Google 上有很多结果,但我找不到真正有帮助的结果。所以希望这对每个人来说都是一个。

另外 - 不要像

You should switch to CMake or Qmake
那样回答。我有一个用 GTK+ 完美构建的大型代码库,除了我试图合并一些 Qt 特定功能。 (项目本身是基于wxWidgets的)。

编辑:

这是我的二进制 Makefile.am:

## Process this file with automake to produce Makefile.in

bin_PROGRAMS =  \
    dbhandler

dbhandler_SOURCES =  \
    doc.cpp \
    doc.h \
    docview.cpp \
    docview.h \
    mainframe.cpp \
    mainframe.h \
    view.cpp \
    view.h \
    viewbase.cpp \
    viewbase.h \
    newtablehandler.cpp \
    newtablehandler.h \
    query.h \
    table.h

dbhandler_CXXFLAGS = -I../../dbinterface \
    -I../../libdbwindow/res/gui \
    `wx-config --cxxflags` 

dbhandler_LDFLAGS = `wx-config --libs` 

如您所见,假定 wxWidgets 在构建后安装,并且它在 *nix 上内部使用 GTK 或 Qt。现在这是 Makefile.am,字体面板位于:

lib_LTLIBRARIES =  \
    libpropertypages.la

libpropertypages_la_SOURCES =  \
    qt/fontpropertypageQt.cpp \
    qt/fontpropertypageQt.h \
    gtk/fontpropertypageGTK.cpp \
    gtk/fontpropertypageGTK.h

libpropertypages_la_CXXFLAGS = -I../../dbinterface \
    `pkg-config \
    --cflags \
    gtk+-3.0` \
    `wx-config --cxxflags`

libpropertypages_la_LDFLAGS = `pkg-config \
    --libs \
    gtk+-3.0` \
    `wx-config --libs`

使用 GTK 可以很好地编译。使用 Qt 不是因为它需要找到 QFontPanerl/QFontDialog。

经过更深入的搜索,我发现我应该使用 QMake 来识别 Qt 安装头文件/库的位置。但是如果我没有安装Qt并且没有QMake,我将无法做任何事情。

qt makefile
1个回答
0
投票

Qt 使用

pkg-config
吗?

您似乎在问Qt是否提供pkg-config数据。 是的,确实如此。

在典型的 Qt 形式中,它提供了几个 pkg-config 文件,一个是通用文件,一个是针对每个主要 Qt 子系统(Core、Gui、Widgets、etc)的文件。 鉴于您需要安装 Qt 开发环境才能处理您所描述的项目,您可能会自己发现这一点。

但是,至于

查找 Automake & Friends 项目的 Qt 安装位置的最佳方法是什么?

,我建议使用Autoconf 存档

中的
AX_HAVE_QT。 这更符合 Autotools 项目的习惯,也更符合 Autotools 项目的习惯。 此外,它还为您提供了更多信息,例如,包括几种 Qt 开发工具的路径。

经过更深入的搜索,我发现我应该使用 QMake 来识别 Qt 安装头文件/库的位置。但如果我没有安装Qt 没有 QMake,我将无法做任何事情。

如果您的项目依赖于 Qt,那么您需要 Qt 来构建它,所以我不明白为什么您认为依赖

qmake

 进行所需检查存在问题。

在这方面,

AX_HAVE_QT

确实使用
qmake
来执行其工作是相关的。  但是,如果您的 Qt 依赖项是可选的,或者如果以其他方式您可以在没有 Qt 的情况下构建合理的项目,那么这就是您应该
在配置时而不是在构建时检测 Qt 的主要原因之一,这这个宏会为你做的。 如果 Qt 在某种程度上是可选的,那么这为您提供了一种在 Qt 不存在时适当配置构建的方法。 如果没有,那么它可以立即告诉您 Qt 丢失,而不是构建在中间某个地方失败。 顺便说一句,类似的情况也适用于其他包的检测和配置。 比如这个...

dbhandler_LDFLAGS = `wx-config --libs`
既可憎又错误。  这是令人讨厌的,至少因为所需的库和标志应该在配置时确定,而不是构建时。  这是错误的,因为 
*_LDFLAGS

是列出需要包含在链接中的库的错误位置。 对于库目标,它们应放入

LDADD
*_LDADD
,对于库目标,应放入
LIBADD
*_LIBADD
。 使用
LDFLAGS
将它们放在链接命令行中的错误位置。
    

© www.soinside.com 2019 - 2024. All rights reserved.