构建事件
这种场景是:为某个目标(库或可执行程序)添加一个定制命令。
这种定制命令可以设置在,构建这个目标过程中的某些时机。这种场景可以在目标构建的过程中,添加一些额外执行的命令。这些命令本身将会成为该目标的一部分。注意,仅在目标本身被构建过程才会执行。如果该目标已经构建,命令将不会执行。
那么这些时机是什么呢?如下表所示:
| 参数 | 含义 | 
|---|
| PRE_BUILD | 在目标中执行任何其他规则之前运行 | 
| PRE_LINK | 在编译源代码之后,链接二进制文件或库文件之前运行 | 
| POST_BUILD | 在目标内所有其他规则均已执行后运行 | 
参数含义
PRE_BUILD在目标中执行任何其他规则之前运行
PRE_LINK在编译源代码之后,链接二进制文件或库文件之前运行
POST_BUILD在目标内所有其他规则均已执行后运行
其中,PRE_BUILD只被Visual Studio 7及之后的版本支持,其他情况下PRE_BUILD都被视为PRE_LINK。
此时的命令为:
add_custom_command(TARGET <target>
                   PRE_BUILD | PRE_LINK | POST_BUILD
                   COMMAND command1 [ARGS] [args1...]
                   [COMMAND command2 [ARGS] [args2...] ...]
                   [BYPRODUCTS [files...]]
                   [WORKING_DIRECTORY dir]
                   [COMMENT comment]
                   [VERBATIM] [USES_TERMINAL])
其中set(CMAKE_STRIP "strip")和add_custom_command是关键
如果是嵌入式系统,CMAKE_STRIP需要对应的交叉编译工具链的strip
例如:
set(CMAKE_STRIP /usr/local/x86_64/***strip)
add_custom_command(
      TARGET
      ${PROJECT_NAME}
      POST_BUILD
      COMMAND ${CMAKE_STRIP} -s ${PROJECT_NAME}
)set(CMAKE_STRIP /usr/local/x86_64/***strip)
project(hello)
……
add_subdirectory(sub)
……
target_link_libraries( ${PROJECT_NAME} sub)
add_custom_command(
      TARGET
      ${PROJECT_NAME}
      POST_BUILD
      COMMAND ${CMAKE_STRIP} -s ${PROJECT_NAME}
      COMMENT "Strip debug symbols done on final binary.")
本文链接:http://it72.com/12713.htm