如何为条形文件配置cmake
How to config cmake for strip file
当我在发布模式中使用cmake时,我有以下二进制文件:
64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=485ac09b0a3aa879f88b7f5db6c00ea8d8e1eaf6, not stripped
我希望二进制文件被剥离。我怎么能以一种干净的方式对cmake说,将-s选项添加到我的编译器中,使其被剥离?
为什么默认发布模式没有剥离我的二进制文件?
最干净的方法是修改CFLAGS或CXXFLAGS(取决于C或C++代码)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
但是,如果你不想改变你的构建系统,还有一个技巧(弄清楚上面的行的确切位置可能很棘手)。您可以将strip用作独立的应用程序,例如:
strip -s a.out
并在可执行文件准备好作为构建后步骤发布后执行。我发现这种方式更干净,然后干扰编译器标志。
您可以尝试
set_target_properties(TARGET_NAME PROPERTIES LINK_FLAGS_RELEASE -s)
使用add_link_options()
或set_target_properties()
添加-s
应该可以正常工作,此外,如果您的目标(参考)至少有一个install()
命令,CMake会创建install/strip
目标,该目标也可以用于对二进制文件进行条带化。
示例:
$ cmake --build . --config Release --target install/strip
这很好用:
add_link_options($<$<CONFIG:RELEASE>:-s>)
相关文章:
- 无法找到/读取配置文件.conf-FileIOException
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 一种在C++中读取TXT配置文件的简单方法
- FFMPEG配置文件级别id大小无效
- 如何通过Conan和CMake找到用于pkg配置的.pc文件
- 配置文件解析器仅返回以前的值
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- C/C++:打印(配置)头文件的内容
- Boost program_options将多个配置文件解析结果存储到一个parsed_options中
- Windows 后台服务(系统配置文件)无法使用 C++ 访问 win 10 上的用户 appData 文件夹?
- 我应该如何获取配置文件的绝对路径与 Windows .exe一起发布?
- JPG-如何从ICC配置文件部分APP2读取/提取数据
- My Project的属性配置正确,但Visual Studio仍然无法打开包含头文件
- 检测到 Conan 配置文件设置与 CMake 之间的编译器版本不匹配
- boost::p rogram_options 配置文件格式
- 如何在Boost::program_options配置文件中为非字符串的自定义选项值类型处理空格
- 配置过程项目文件中的错误可能无效
- POCO - 属性文件配置保存方法始终使用 ":" 作为分隔符进行写入
- Linux C++ 由 XML 文件配置的应用程序设置
- 如何为条形文件配置cmake