如何在CMake中链接QtMain与Qt5
How to link QtMain in CMake with Qt5?
我将项目代码从Qt4升级到Qt5。它使用CMake。除了与Qt相关的一行Cmake命令外,转换很顺利。我在当前文档中找不到,比如
- http://qt - project.org/doc/qt 5.0 -/- qtdoc/cmake manual.html
- http://qt project.org/doc/qt - 5.0 -/- qtdoc/qtmain.html
如何链接与QtMain从CMake(与Qt5)?
这是唯一缺少的位转换我的项目。谁能给我指出一个医生解释这个或解释如何使用Qt5?我的Qt4代码工作正常,但我找不到Qt5的Cmake宏。
编辑>这是我现在的CMake文件:https://bitbucket.org/klaim/aos_qt5/src/593c195c4c6889f6968d68fca018ef425783a063/tools/aosdesigner/CMakeLists.txt?at=wip_qt5
所有qt5必要的CMake宏都被正确设置,我相信,唯一不工作的是链接到QtMain什么也不做,正如预期的那样,因为应该有一个qt5特定的方式来做,我没有在qt5文档中找到。
您可以浏览文件历史记录,查看它是如何与Qt4一起工作的。
从Qt文档你链接到,似乎你可以找到Qt5Core而不是Qt5Widgets。这将创建一个名为Qt5::WinMain
的导入目标。来自Qt文档:
为每个Qt模块创建导入的目标。这意味着
Qt5<Module>_LIBRARIES
包含导入目标的名称,而不是库的路径。
…
Qt 5中的每个模块都有一个库目标,命名约定为Qt5::<Module>
find_package( Qt5Widgets REQUIRED )
find_package( Qt5Core REQUIRED )
...
add_executable( aosdesigner WIN32 ${AOSDESIGNER_ALL_FILES} )
target_link_libraries( aosdesigner
${Boost_LIBRARIES}
utilcpp
aoslcpp
Qt5::WinMain # <-- New target available via find_package ( Qt5Core )
)
qt5_use_modules( aosdesigner Widgets )
我还建议您删除您的两个link_libraries
调用,因为它是一个废弃的命令,我指定CMake版本2.8.9而不仅仅是2.8作为CMakeLists.txt顶部的最低要求,因为这是qt5_use_modules
所需要的。
从CMake 2.8.11和Qt 5.1开始,如果你在add_executable调用中指定WIN32,或者设置WIN32_EXECUTABLE target属性,那么链接到Qt5::WinMain是自动/隐式的。
https://devdays.kdab.com/wp-content/uploads/2012/cmake.pdf带视频
http://www.youtube.com/watch?feature=player_detailpage& v = GJ0kMsLbk6Q # t = 751
描述了CMake 2.8.11的特性。
有关CMake with Qt的更多信息,请参阅
http://www.kdab.com/modern-cmake-with-qt-and-boost/编辑:感谢Archi的评论(见下文),只需添加
target_link_libraries(<your_app> Qt5::WinMain)
或
target_link_libraries(<your_app> ${Qt5Core_QTMAIN_LIBRARIES})
在你的应用程序的CMakeLists.txt。
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 控制台输出在 Qt5 中未正确显示
- 在Qt5中使用QTextSteam时的"使用已删除功能"
- Qt5 从 MySQL 数据库中选择数据
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- Qt5 用户界面编译器:-i 选项不可用
- Qt5 throws std::bad_alloc
- 如何避免在 cmake 中自动链接 Qt5 库?
- 动态更改 qt5 选项卡名称
- 可能的Qt5错误:调用setFixedSize()禁用主窗口的关闭按钮(在Win7下)
- QT5 信号不会激活插槽内的功能
- 如何在使用 Qt5 构造函数时将非常量参数修改为常量参数?
- 如何在 Qt5 中执行多个 QProcess
- Qt5 [make -snap] 无法正确编译:进程"/usr/bin/snap"代码 1 退出
- 使用 Qt5 SQL 进行异步数据库访问的策略
- Qt5 ui,多个窗口:如何从窗口 1 访问窗口 2 中的 UI 对象
- 如何使用新语法QT5将信号连接到信号?
- 如何在CMake中链接QtMain与Qt5