使用Qt K *类与CMake

时间:2010-12-16 23:52:23

标签: qt qt4 cmake

我使用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命令?

谢谢,

大卫

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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