0

我正在尝试使用 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 文档中,它说要在我的 CMAKE 文件中添加“set(QT_USE_QTWEBKIT TRUE)”,现在这是我的 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)

但是我仍然遇到错误,所以要么我做错了,在错误的地方等等。我还清理并重新配置了我的项目几次,以确保我没有使用错误的生成文件。

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

谢谢你。

4

2 回答 2

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实际上FIND_PACKAGE与手动调用 set 相同QT_USE_WEBKIT。但是这个变量只UseQt4.cmake在命令包含(和“执行”)的地方被评估/使用INCLUDE。有关详细信息,请参阅FindQt4的 CMake 文档。

于 2013-09-06T18:27:44.750 回答
0

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

target_link_libraries(corrections ${QT_LIBRARIES} )
于 2013-09-06T18:05:33.527 回答