我想创建一个需要全局快捷方式的小应用程序.所以,我已经下载了当前版本的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团队并打开我的应用程序的代码.
小智 11
将以下行添加到.pro文件中:
CONFIG += qxt
QXT += core gui
Run Code Online (Sandbox Code Playgroud)
注意:在Linux上构建Qxt时,不要忘记这样做,sudo make install
否则这个小小的魔法可能无法正常工作.
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}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不确定它是否适用于复杂的项目.
默认情况下,Qxt是在发布模式下构建的,但Qt Creator使用调试模式,它会导致项目的二进制文件损坏,具体取决于Windows下的Qxt.您必须将项目切换到发布模式或在调试模式下构建Qxt(运行configure -debug
并重建Qxt).
最后一件事:在Windows中,即使您成功构建了项目,也无法从Qt Creator运行您的项目.你必须拷贝所需Qwt*.dll
文件(使用d
从-suffix版本,如果你在调试模式是)libqxt-0.5.1/deploy/libs
到your_project/(release|debug)
目录中.