概述
- 本文依赖 前文
- 本文将介绍使用cmake语法屏蔽运行Qt exe的cmd窗口
解决办法
- 配置VS项目属性, 缺点: cmake重新 configure后,项目属性会重置,再次运行还将出现cmd弹窗。
- CMakeLists.txt中配置, 一劳永逸。
配置VS项目属性 方法
步骤如下
第一步:右击VS项目,选择“属性” —> “连接器” —> “子系统” -> “窗口(/SUBSYSTEM:WINDOES)”
第二步:选择“属性” -> “连接器” -> “高级” -> “入口点”,设置内容“mainCRTStartup”
CMake一行代码
打开 前文 中的 CMakeLists.txt文件,增加下面的一行代码、
# 加个开关,是否开启。
if(is_debugging)
# 这里设置的是 Debug, release只需要将LINK_FLAGS_DEBUG替换为LINK_FLAGS_RELEASE即可
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
endif(is_debugging )
其中, is_debugging的声明如下
option(is_debugging "show the debugging information on cmd windows ?" ON)
这样就很好了,需要时,只需要将其设置为ON,不需要设置为OFF.
CMakeLists.txt完整代码
cmake_minimum_required(VERSION 3.5)
project(demo_qt LANGUAGES CXX)
option(is_debugging "show the debugging information on cmd windows ?" ON)
# set(Qt5_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5")
# set(Qt5Widgets_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5Widgets")
# set(Qt5Gui_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Gui")
# set(Qt5Core_DIR "${CMAKE_PREFIX_PATH}/lib/cmake/Qt5Core")
# set(QT_QMAKE_EXECUTABLE "${CMAKE_PREFIX_PATH}/bin/qmake.exe")
# ----------------------------------------------------------------------------------
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# ----------------------------------------------------------------------------------
# 手动添加下面这一行代码
set(CMAKE_PREFIX_PATH "C:/major/development/qt_5.14.2/install/5.14.2/msvc2015_64")
find_package(Qt5 COMPONENTS Widgets REQUIRED)
# -----------------------------------------------------------------------------
# 个人更习惯下面的方式
file(GLOB_RECURSE src_files ${CMAKE_CURRENT_SOURCE_DIR}/*.cc)
file(GLOB_RECURSE inc_files ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
file(GLOB_RECURSE ui_files ${CMAKE_CURRENT_SOURCE_DIR}/*.ui)
# -----------------------------------------------------------------------------
# 创建项目 ${PROJECT_NAME} 是我手动替换的
add_executable(${PROJECT_NAME} ${inc_files} ${src_files} ${ui_FILES} )
# ----------------------------------------------------------------------------
# ${PROJECT_NAME} 是我手动替换的
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Widgets)
# 加个开关,是否开启。
if(is_debugging)
# 这里设置的是 Debug, release只需要将LINK_FLAGS_DEBUG替换为LINK_FLAGS_RELEASE即可
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
endif(is_debugging )