将 Qt K* 类与 CMake 结合使用

发布于 2024-10-07 21:25:08 字数 637 浏览 0 评论 0原文

我使用 Qt 的项目的标准 CMakeLists.txt 文件如下所示:

PROJECT(KFileWidgetDemo)

FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})

QT4_WRAP_UI(UISrcs form.ui)
QT4_WRAP_CPP(MOCSrcs form.h)

include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

ADD_EXECUTABLE(KFileWidgetDemo main.cpp form.h form.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(KFileWidgetDemo ${QT_LIBRARIES})

但是,我始终只使用 Q* 类。现在我需要使用 KFileWidget,并且在编译时遇到错误:

error: stray ‘\177’ in program
error: stray ‘\1’ in program

是否有一个神奇的 CMake 命令可以解决此问题?

谢谢,

大卫

My standard CMakeLists.txt file for projects that use Qt looks like:

PROJECT(KFileWidgetDemo)

FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})

QT4_WRAP_UI(UISrcs form.ui)
QT4_WRAP_CPP(MOCSrcs form.h)

include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

ADD_EXECUTABLE(KFileWidgetDemo main.cpp form.h form.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(KFileWidgetDemo ${QT_LIBRARIES})

However, I have always only used Q* classes. Now I need to use KFileWidget, and I am getting errors when compiling:

error: stray ‘\177’ in program
error: stray ‘\1’ in program

Is there a magic CMake command that might fix this?

Thanks,

David

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅紫色的梦幻 2024-10-14 21:25:08

我的印象是 K* 类是 Qt 命名其 KDE 特定子类的东西。我想情况并非如此。我通过直接包含并链接到 KDE4 来实现此工作:

cmake_minimum_required(VERSION 2.6)

PROJECT(KFileWidgetDemo)

FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})

find_package(KDE4 4.5.0 REQUIRED)
include_directories( ${KDE4_INCLUDES} )

QT4_WRAP_UI(UISrcs form.ui)
QT4_WRAP_CPP(MOCSrcs form.h)

include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

ADD_EXECUTABLE(KFileWidgetDemo main.cpp form.h form.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(KFileWidgetDemo ${QT_LIBRARIES} ${KDE_LIBRARIES} ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS})

请注意,解决 KUrl 链接器错误的关键是 ${KDE4_KFILE_LIBS}。

I was under the impression the the K* classes were what Qt named their KDE specific subclasses. I guess that is not quite the case. I got this working by including and linking to KDE4 directly with:

cmake_minimum_required(VERSION 2.6)

PROJECT(KFileWidgetDemo)

FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})

find_package(KDE4 4.5.0 REQUIRED)
include_directories( ${KDE4_INCLUDES} )

QT4_WRAP_UI(UISrcs form.ui)
QT4_WRAP_CPP(MOCSrcs form.h)

include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

ADD_EXECUTABLE(KFileWidgetDemo main.cpp form.h form.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(KFileWidgetDemo ${QT_LIBRARIES} ${KDE_LIBRARIES} ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS})

Note the key to resolve the linker errors for KUrl was ${KDE4_KFILE_LIBS}.

眼泪都笑了 2024-10-14 21:25:08

当我的一个源文件被某些 IDE 转换为 UTF-16 时,我也得到了类似的效果。检查文件的编码并将其更改为 UTF-8。

I had a similar effect when one of my source files was converted to UTF-16 by some IDE. Check the encoding of your files and change them to UTF-8.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文