首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLion和Qt5:调优qmake

CLion和Qt5:调优qmake
EN

Stack Overflow用户
提问于 2019-12-15 18:44:13
回答 1查看 329关注 0票数 0

正如其他地方所解释的,我有一个设置,例如这里。我在系统范围内安装了Qt5,并且在我的CMakeLists.txt中有必要的行。我的IDE是克里恩。在添加Q_OBJECT宏之前,简单GUI中的一切都很好(我希望这样可以将信号连接到插槽)。现在,当我这样做的时候,我得到了undefined reference to vtable-type错误,这也是在网上大量发现的。我的困惑源于这样一个事实,即有些人建议在项目中使用Qt5-bundled cmake,这实质上意味着“只用于GUI”,我需要更改工具链。但实际上有些人对此只字未提。大家都说的是

每次添加/删除Q_OBJECT时qmake运行qmake

现在,如何在我的CMakeLists.txt中捕捉到这一点?--下面给出了相关的部分。我见过mocqmake/usr/lib/qt5/bin中;那么如何与CLion沟通

代码语言:javascript
复制
# ----- GUI part -----
# Qt5 inclusion
# The meta object compiler is one of the core functionality of Qt, it reads a C++ header file and if it finds a
# Q_OBJECT macro, it will produces a C++ source file containing meta object code for the class.
# It's the mechanism that allow signal and slots to work.
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# set(CMAKE_PREFIX_PATH $ENV{QT_DIR}/$ENV{QT_VERSION}/gcc_64/lib/cmake)
set(CMAKE_PREFIX_PATH /usr/lib/qt5/bin/)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
# Enable user interface compiler (UIC)
# The user interface compiler is a program that read XML from the .ui file
# generated by Qt Interface Designer and generate C++ code from it.
set(CMAKE_AUTOUIC ON)

if(CMAKE_VERSION VERSION_LESS "3.7.0")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()

set(CMAKE_MODULE_PATH /usr/lib/qt5)
# @see: https://stackoverflow.com/questions/51994603/cmake-qt5-undefined-reference-to-qprinterqprinterqprinterprintermode
SET(QT5_MODULES Widgets PrintSupport)
find_package(Qt5 COMPONENTS ${QT5_MODULES} REQUIRED)

add_subdirectory(${PROJECT_SOURCE_DIR}/extern/qcustomplot)
add_executable(gui
        ${PROJECT_SOURCE_DIR}/gui/main.cpp
        ${PROJECT_SOURCE_DIR}/extern/qcustomplot/qcustomplot.cpp)
set_target_properties(gui PROPERTIES LINKER_LANGUAGE CXX)
target_link_libraries(gui
        PUBLIC
        Qt5::Core Qt5::Widgets qcustomplot)

不要在意冗长的注释;我最初的GUI培训是在Java Swing中进行的,我发现它们很有用。

编辑:帮助我的是qt5_wrapper_cppQt5cmake在没有定义的引用中失败,在hello world上引用vtable,将inc & src作为子目录。中提到的事情

EN

回答 1

Stack Overflow用户

发布于 2019-12-15 19:02:25

Q_OBJECT宏需要生成代码。这就是为什么您有undefined reference异常。我不记得如何为Qt配置cmake项目,但我建议您阅读https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html

set_target_properties(${PROJECT_NAME} PROPERTIES AUTOMOC TRUE)这样的东西应该能帮助你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59347003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档