CMAKE生成exe文件时运行时有cmd窗口

本文介绍了如何通过在CMakeLists.txt中添加CMAKE_CXX_FLAGS或在cmake构建时指定-mwindows参数,以及针对C或C++的不同处理方式,来避免exe程序运行时出现cmd弹窗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、运行exe执行文件 会有cmd弹窗
在这里插入图片描述
2、解决方法
只需要在cmakelists.txt中添加set(CMAKE_CXX_FLAGS “-mwindows”)
或者在cmake时指定编译参数cmake -DCMAKE_CXX_FLAGS="-mwindows"即可
如果用的是c而不是c++,就只需把CXX改为C
在这里插入图片描述
重新编译打包运行后没有cmd弹窗了
在这里插入图片描述

### 使用CMake将C++项目构建为Windows EXE文件并创建安装包 #### 构建环境设置 为了确保能够在Windows环境下顺利使用CMake和MinGW来构建和编译C++项目,需先配置好开发工具链。这包括但不限于安装最新版本的CMake以及适合目标平台架构(32位或64位)的MinGW发行版[^1]。 #### 定义项目的CMakeLists.txt 对于希望被打包成独立应用程序(CMD窗口下的`.exe`)或者图形界面应用(.exe),应在根目录下编写`CMakeLists.txt`文件指定源码位置、链接库路径以及其他必要的参数。特别是当涉及到第三方依赖项,合理利用find_package()指令可以帮助简化跨平台支持工作[^3]。 ```cmake # 设置最低 cmake 版本要求 cmake_minimum_required(VERSION 3.10) # 设定项目名称及默认语言标准 project(MyApp VERSION 1.0 LANGUAGES CXX) add_executable(${PROJECT_NAME} main.cpp) if(MSVC OR MINGW) set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".exe") endif() install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin BUNDLE DESTINATION Applications LIBRARY DESTINATION lib) ``` 上述脚本定义了一个名为MyApp的应用程序,并指定了其入口点(main.cpp);同针对MSVC与MINGW两种编译器做了特殊处理以确保生成的是.exe格式的目标文件。最后通过install命令声明了该二进制文件应该如何被部署到最终用户的计算机上——即放置于bin子目录之下[^2]。 #### 配置选项与变量管理 考虑到不同操作系统间可能存在差异化的特性需求,在实际操作过程中往往还需要引入额外的选择开关或是宏定义来进行区分对待。例如可以通过option语句让用户自行决定是否开启调试模式(debug build), 或者借助set_ifndef函数预先设定一些全局性的常量值以便后续引用。 #### 执行构建流程 完成以上准备工作之后就可以正式开始构建过程了。打开命令提示符切换至包含有CMakeLists.txt的工作区所在的位置,依次运行如下两条指令即可触发整个流水线动作: ```bash mkdir build && cd build cmake .. make install ``` 第一条命令负责建立一个新的临空间用于存放中间产物(build artifacts); 而第二条则调用了cmake去解析顶层描述文档中的各项指示从而启动具体的组装环节。一旦顺利完成,则会在当前层级下面自动形成一个叫做"install"的新文件夹,里面就包含了可以直接分发给其他人的成品软件包[^4]。 #### 创建安装向导 如果想要进一步提升用户体验的话,还可以考虑采用NSIS这样的开源工具来自动生成带有友好交互界面的setup wizard。只需按照官方指南准备好相应的资源素材(图标、许可协议文本等),再配合少量脚本逻辑就能轻松实现一键式自动化打包解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值