簡體   English   中英

如何為條帶文件配置 cmake

[英]How to config cmake for strip file

當我在 Release 模式下使用 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($<$<CONFIG:RELEASE>:-s>)

使用add_link_options()set_target_properties()添加-s應該可以正常工作,此外,CMake 創建一個install/strip目標,如果您的目標至少有一個install()命令,該目標也可用於條帶化二進制文件(參考) .

示例:

$ cmake --build . --config Release --target install/strip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM