Qt w / Cmake:设置(QT_USE_QTWEBKIT TRUE)不起作用

时间:2013-09-06 17:42:06

标签: c++ qt cmake qtwebkit

我正在尝试使用cmake构建一个基于Qt的应用程序(这是Kdevelop给我的)。我试图使用QWebView;

QWebView *webView = new QWebView( this );
webView->load(QUrl("http://google.ca"));

但它因未定义参考错误而失败......

undefined reference to `QWebView::QWebView(QWidget*)'
undefined reference to `QWebView::load(QUrl const&)'

我查了一下,我需要将QTWEBKIT添加到我的项目中,但是所有的解决方案都说要将它添加到我的.pro文件中...而且我没有使用.pro。在QT文档中,它说要将“set(QT_USE_QTWEBKIT TRUE)”添加到我的CMAKE文件中,这是我的CMakeLists.txt文件:

#-------------------------------------------------------------------------------
# Corrections Tool CMAKE list
#-------------------------------------------------------------------------------
project(corrections)


# Versioning Requirements
#-------------------------------------------------------------------------------
cmake_minimum_required(VERSION 2.6)
find_package(Qt4 REQUIRED)


# Include QT Librtaries
#-------------------------------------------------------------------------------
set(QT_USE_QTWEBKIT TRUE)


# Set Sources
#-------------------------------------------------------------------------------
set(corrections_SRCS corrections.cpp main.cpp utilities.cpp prettySplash.cpp)


#The Rest
#-------------------------------------------------------------------------------
include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})
qt4_automoc(${corrections_SRCS})
add_executable(corrections ${corrections_SRCS})
target_link_libraries(corrections ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
install(TARGETS corrections RUNTIME DESTINATION bin)

但我仍然得到错误,所以我做错了,在错误的地方,等等。我也清理了几次并重新配置我的项目,确保我没有使用生成错误的makefile。

如何修复我的cmake配置以实际工作,或将我的项目转换为使用.pro(最小压力和心痛)?

谢谢。

2 个答案:

答案 0 :(得分:2)

在CMake中选择Qt组件的规范方法是在find_package调用中指定它们,然后包含${QT_USE_FILE}

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

...


TARGET_LINK_LIBRARIES( corrections ${QT_LIBRARIES} )

这已经配置了包含目录并设置${QT_LIBRARIES}以包含所有相关的 Qt库(即您选择的组件及其所依赖的所有Qt库)。 因此,您不需要像在示例中那样单独列出库来手动添加库。

编辑: 补充说明: COMPONENT的{​​{1}}参数实际上与您设置FIND_PACKAGE的手动调用相同。但是,此变量仅在QT_USE_WEBKIT中评估/使用,UseQt4.cmake命令包含(和“执行”)。有关详细信息,请参阅CMake documentation of FindQt4

答案 1 :(得分:0)

您似乎没有链接到所有Qt库。在target_link_libraries中使用$ {QT_LIBRARIES}代替$ {QT_QTCORE_LIBRARY} $ {QT_QTGUI_LIBRARY}

target_link_libraries(corrections ${QT_LIBRARIES} )