我正在尝试使用 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_PACKAGE
的COMPONENT
参数实际上与您手动调用设置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/