CMake中qmake CONFIG -= console的等价配置(关闭QML应用控制台)
解决方案
问题原因
你当前的CMakeLists.txt存在两处错误导致配置不生效:
- 重复定义了
APSMDClient构建目标:你在Qt版本判断逻辑中已经完成了目标的第一次定义,后续额外添加的add_executable(APSMDClient WIN32 ${SOURCE_FILES})属于重复定义,不会生效,且该行用到的SOURCE_FILES变量并未提前声明。 - 关闭控制台所需的
WIN32参数没有添加到第一次的目标定义语句中。
正确修改方案
CMake中Windows平台下关闭控制台窗口的等价配置,就是给可执行目标的构建语句添加WIN32参数,对应修改你的CMakeLists.txt如下:
- 先删除末尾多余的重复定义行:
# 删掉这行完全无效的代码 add_executable(APSMDClient WIN32 ${SOURCE_FILES})
- 修改Qt版本判断分支中的目标定义语句,添加
WIN32参数:
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) # 这里添加WIN32参数 qt_add_executable(APSMDClient WIN32 ${PROJECT_SOURCES} ) qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) else() if(ANDROID) add_library(APSMDClient SHARED ${PROJECT_SOURCES} ) else() # 非Android的Qt5版本也添加WIN32参数 add_executable(APSMDClient WIN32 ${PROJECT_SOURCES} ) endif() qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) endif()
- 如果你需要同时兼容macOS平台,只需要在
WIN32后面额外添加MACOSX_BUNDLE参数即可。
修改完成后清空构建目录重新编译,控制台窗口就不会再弹出了。
内容的提问来源于stack exchange,提问作者Евгений Дружинин
相关产品推荐
相关产品推荐

