我想创建一个需要全局快捷方式的小应用程序。所以,我已经下载了当前版本的libqxt(0.5.1)并在Qt Creator中作为项目打开。
Libqxt以这种方式编译没有问题,所以我认为在项目的依赖项中添加它会在构建中自动添加,就像Eclipse与JAR库一样(我知道它们是不同的IDE但它似乎是他们的共同特征)。
会发生什么? Qt Creator在我的项目之前在需要时编译qxt,但是当我想要包含它的标题时,Qt Creator会一直警告我它找不到它们。
可能我错过了正确的标题名称(我试过qxt文档中显示的标题:http://doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html)
顺便说一句,我查看了全局快捷方式的代码,我想我可以将其删除并在我的应用程序中使用它,我将信任qxt团队并打开我的应用程序的代码。
答案 0 :(得分:11)
将以下行添加到.pro文件中:
CONFIG += qxt
QXT += core gui
注意:在Linux上构建Qxt时,不要忘记执行sudo make install
,否则这个小小的魔法可能无法正常工作。
答案 1 :(得分:6)
Qt Creator不知道如何向项目公开不同的库。这是开发人员的职责。在构建主项目之前,依赖性确保仅已经构建了所提到的项目。
您真正担心的是在没有正确安装的情况下使用Qxt。假设已经运行了configure
并且libqxt
已经构建(使用Qt Creator或通过qmake
+ make
手动),我的解决方案是添加以下代码段(明显的QXT_DIR自定义) )到.pro文件:
QXT_DIR = $${IN_PWD}/../libqxt-0.5.1
LIBS += -L$${QXT_DIR}/deploy/libs
INCLUDEPATH += $${QXT_DIR}/deploy/include
for(module, QXT) {
MODNAME = $$upper($$replace(module, "(.).*", "\1"))$$replace(module, "^.", "")
INCLUDEPATH += $${QXT_DIR}/deploy/include/Qxt$${MODNAME}
INCLUDEPATH += $${QXT_DIR}/src/$${module}
win32:CONFIG(debug, debug|release):MODNAME = $$join(MODNAME,,,d)
LIBS += -lQxt$${MODNAME}
}
不幸的是,我不确定它是否适用于复杂的项目。
默认情况下,Qxt是在发布模式下构建的,但Qt Creator使用调试模式,它会导致项目的二进制文件损坏,具体取决于Windows下的Qxt。您必须将项目切换到发布模式或在调试模式下构建Qxt(运行configure -debug
并重建Qxt)。
最后一件事:在Windows中,即使您成功构建了项目,也无法从Qt Creator运行您的项目。您必须从Qwt*.dll
到d
目录复制所需的libqxt-0.5.1/deploy/libs
个文件(如果您处于调试模式,请使用your_project/(release|debug)
- 后缀版本)。