c++ - Qt 带 Cmake : set(QT_USE_QTWEBKIT TRUE) not working

标签 c++ qt cmake qtwebkit

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

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

但它因 undefined reference 错误而失败...

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(以最小的压力和心痛)?

谢谢。

最佳答案

在 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 库)。 因此,您不需要像在示例中那样通过单独列出库来手动添加库。

编辑: 补充说明: FIND_PACKAGECOMPONENT参数实际上与您手动调用设置QT_USE_WEBKIT 的作用相同。但是这个变量只在 UseQt4.cmake 中被评估/使用,它被 INCLUDE 命令包含(和“执行”)。参见 CMake documentation of FindQt4了解详情。

关于c++ - Qt 带 Cmake : set(QT_USE_QTWEBKIT TRUE) not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18663543/

相关文章:

c++ - 我的递归函数有什么问题?

c++ - 如何用运行的用户替换特定的 Windows 用户名路径

c++ - 将 QT Creator 5.8 与 MSVC 2015 编译器结合使用

c++ - connect(QObject*, SIGNAL(signal()), functor) 在 qt5 中没有连接

cmake - 如何将脚本的依赖项添加到 CMake 中的目标?

python - 找不到 PythonLibs(要求 3.3 但我有 2.7.6)

c++ - 了解 shared_ptr

c++ - 用 fork() 模拟线程

c++ - QCustomPlot 在现有绘图之上添加散点

cmake - 从CMakeLists.txt文件设置CMAKE_INSTALL_PREFIX