2009-10-14 105 views
4

我想创建一个需要全局快捷键的小应用程序。所以,我下载了当前版本的libqxt(0.5.1),并在Qt Creator中作为项目打开。Qt Creator下的Libqxt

Libqxt以这种方式编译没有问题,所以我认为在项目的Dependencies选项卡中添加它会自动添加到构建中,就像Eclipse使用JAR库一样(我知道这是不同的IDE,但它似乎成为其中的一个共同特征)。

会发生什么? Qt Creator在我的项目之前编译qxt,当需要时,但是当我想包含它的头文件时,Qt Creator一直警告我它找不到它们。

也许我缺少头的正确名称(我试过头QXT文件中表明:http://doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html

顺便说一句,我找了全球的快捷方式的代码,我想我可以抓取出来,并使用它在我的应用程序中是一样的,我将信任qxt团队并打开我的应用程序的代码。

+0

您是否已将Qxt包含文件夹添加到您的INCLUDEPATH qmake变量中? – rpg 2009-10-14 13:17:26

+0

我现在试过了,但它不起作用。我在我的.pro文件中添加了这个: INCLUDEPATH + =〜/ tmp/libqxt-0.5.1/deploy/include/ 由于其他IDE中可用的情况,这有点令人失望。如果不是,依赖关系选项卡有什么用处? – 2009-10-14 15:48:40

+0

嗯,我想我会留下这个问题,但我解决了我的问题在系统中安装lib(make install)。 顺便说一下,我将INCLUDEPATH中使用的路径更改为/home/dario/libqxt-0.5。1/deploy/include /,它开始找到头文件,但由于里面使用了其他缺少头文件而无法编译。 – 2009-10-14 15:58:49

回答

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/libsyour_project/(release|debug)目录。

+0

感谢您的回答,它的工作。 – 2010-01-03 19:22:44

+0

+1感谢conf!我可以问你这行是什么:MODNAME = $$ upper($$ replace(module,“(。)。*”,“\ 1”))$$ replace(module,“^。”,“”)。再次感谢! – Viet 2010-06-06 03:34:45

+0

@Viet:Qxt使用小写字母表示QXT变量中提供的模块名称,而CamelCase用于库名称和一些包含的目录。这与Qt类似。 提到的行使用简单的函数将'MODNAME'设置为'module'的CamelCase版本('upper()'是没有记录的,但不言而喻)和正则表达式。 – przemoc 2010-06-08 14:06:21

11

from the documentation

添加以下行到你的.pro文件:

CONFIG += qxt 
QXT  += core gui 

注:在构建在Linux上QXT不要忘了做一个sudo make install否则这个小片神奇可能无法工作。

+0

哇这真的有用!看起来'make install'步骤修改了SDK中的某个文件,让它知道它的存在。好像QtSDK/Desktop/Qt/473/gcc/mkspecs/features/qxt.prf – 2011-05-11 18:14:03