首页 > 其他分享 >Cmake减少输出可执行文件的大小

Cmake减少输出可执行文件的大小

时间:2023-09-18 19:22:25浏览次数:81  
标签:可执行文件 输出 set CMAKE HelloWorld add STRIP RELEASE Cmake

1、使用Release模式

set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_BUILD_TYPE "RELEASE")

 

2、使用strip命令删除调试信息等

set(CMAKE_STRIP "strip")
add_custom_command(TARGET  ${PROJECT_NAME} POST_BUILD
        COMMAND ${CMAKE_STRIP} "$<TARGET_FILE:${PROJECT_NAME}>"
        COMMENT "Strip debug symbols done on final binary.")

 

例如一个HelloWorld程序的原CMakeLists.txt没优化前如下

cmake_minimum_required(VERSION 3.20)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 17)

add_executable(HelloWorld HelloWorld.cpp)

优化前文件体积3183KB

优化后

cmake_minimum_required(VERSION 3.20)
project(HelloWorld)

set(CMAKE_STRIP "strip")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_BUILD_TYPE "RELEASE")
set(CMAKE_CXX_STANDARD 17)

add_executable(HelloWorld HelloWorld.cpp)
add_custom_command(TARGET  ${PROJECT_NAME} POST_BUILD
        COMMAND ${CMAKE_STRIP} "$<TARGET_FILE:${PROJECT_NAME}>"
        COMMENT "Strip debug symbols done on final binary.")

优化后体积912KB,当然如果你如果需要保留exe文件调试信息,请酌情使用RELEASE

标签:可执行文件,输出,set,CMAKE,HelloWorld,add,STRIP,RELEASE,Cmake
From: https://www.cnblogs.com/passedbylove/p/17712860.html

相关文章

  • CMake/001-Hello CMake
    开始学习使用CMake建立工程(本文以实践为目的,注重实践)1.先安装CMake 2.创建一个最简单的CMake工程a.准备工作(找一个空目录,建立如下文件)           b.hello.cpp文件内容如下#include<stdlib.h>#include<string.h>v......
  • 页面输出太多会严重影响web程序的性能
    我有这样一个小程序:asp+sqlserver2000。数据量增加的很快,最近发现它的性能非常差,每次打开都需要十几秒,甚至几十秒,因为我的程序分页用的是我自己的分页程序:难道这个分页程序有问题,但是其他地方用到它没有感觉到慢呀,我没事就琢磨他,到网上查资料,结果没有具体查到说到我......
  • cout输出中文,在命令提示符中出现乱码
    本例子解决方法在Windows操作系统中测试有效。使用C++的cout输出中文,例如cout<<"yes中文"<<endl;运行结果,如果在命令提示符中出现乱码,如下图:那么解决办法如下:先在命令提示符中,执行chcp65001,即输入chcp65001,回车。进入激活代码页65001,这样就支持utf-8的字符,那么utf-8的中文......
  • 《动手学深度学习 Pytorch版》 6.4 多输入多输出通道
    importtorchfromd2limporttorchasd2l6.4.1多输入通道简言之,多通道即为单通道之推广,各参数对上即可。defcorr2d_multi_in(X,K):#先遍历“X”和“K”的第0个维度(通道维度),再把它们加在一起returnsum(d2l.corr2d(x,k)forx,kinzip(X,K))X=torch.t......
  • C语言输出百分号%
    遭遇的问题在学习时有一个课后题要求计算两个变量的加减乘除以及取余,其中去余需要输出如下的效果:10%5=0;我就写了这样的代码:printf("a%b=%d",mod);结果就输出的这:137=6试了下%也没有用然后去查了查如何在C中输出%知识C中输出时,%用于控制输出格式如:%d表示该......
  • springboot+html使用sql语句能够在控制台输出相关数据信息list,但是输出的list=null(未
    问题描述具体来说,就是,连接上数据库之后,发现查询的sql语句能够正常在控制台输出数据,但是将sql语句的查询结果放到list里面,在控制台输出的list=[null];真的崩溃了!!!之前从来没有遇到过这种情况;尝试了网上的各种方法,也都解决不了,麻木ing~求解!......
  • 变量and输入输出
    变量and输出概念:变量,本质上是一个装东西的盒子,而且只能装一个值一、1.变量的命名规则变量的名字由字母,数字,下划线_组成,不能以数字开头,不能以关键字命名,且区分大小写变量的定义格式:变量名=值=赋值符号==等于a=1b=2.1c='hhh'3.变量的类型str字符型int整型,float......
  • springboot+vue导出本地可执行文件
    1、前端页面增加下载链接<ahref="http://localhost:80/system/download"download="xxx.exe">下载地址</a>2、后端读取文件下载//下载文件@GetMapping("/system/download")publicvoiddownload(HttpServletResponseresponse){S......
  • 简单介绍cmakelist的使用
    Windows平台1在文件夹中创建一个CPP文件;自己随便写一个主函数就行 写一个简单的c++main函数;2创建一个CMakeLists.txt文件,写上下列内容;可以使用notepad,会对一些字段自动补齐cmake_minimum_required(VERSION3.5FATAL_ERROR)Project(HELLOW-01LANGUAGESCXX)add_e......
  • DC电源模块单路、双路输出的不同应用场景
    BOSHIDADC电源模块单路、双路输出的不同应用场景DC电源模块是一种常见的供电设备,通常用于将市电转换为稳定的直流电源,以供电给各种电子设备。DC电源模块的输出方式分为单路和双路两种,下面将分别介绍它们的不同应用场景。一、单路输出单路输出的DC电源模块通常只有一个输出端口......