【问题标题】:Using Qt K* classes with CMake在 CMake 中使用 Qt K* 类
【发布时间】:2010-12-16 23:52:23
【问题描述】:

我使用 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 命令可以解决这个问题?

谢谢,

大卫

【问题讨论】:

    标签: qt qt4 cmake


    【解决方案1】:

    我的印象是 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}。

    【讨论】:

      【解决方案2】:

      当我的一个源文件被某个 IDE 转换为 UTF-16 时,我产生了类似的效果。检查文件的编码并将它们更改为 UTF-8。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 2023-03-08
        • 2018-10-06
        • 2011-01-06
        相关资源
        最近更新 更多