有这样一个需求:
我有一个QT的camke工程,这个工程的主要目的是编译一个so文件,编译完成后会将这个so文件copy到另一个工程里使用。
为了省去这个手动copy的动作,我需要在编译完成so库后就将so文件copy过去,如何操作呢?
假设我的cmake工程部分代码如下:
add_library( # Sets the name of the library.
scardlua
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
scardfakecard.cpp
)
我要编译一个libscardlua.so的文件
如果要编译完成后执行某个脚本文件,则需要在cmakelist文件中添加如下代码:
set(MY_CUSTOM_COMMAND "${CMAKE_SOURCE_DIR}/cp_so.sh")
message("Executing custom command: ${MY_CUSTOM_COMMAND}")
## 添加自定义命令,在编译完成后执行
add_custom_command(
TARGET scardlua POST_BUILD
COMMAND ${MY_CUSTOM_COMMAND}
COMMENT "Copying .so file after build"
)
# 添加自定义目标以确保自定义命令被执行
add_custom_target(copy_so_file ALL DEPENDS scardlua)
这样,编译完我的so库文件后就会行我放在cmakeList.txt同级目录下的cp_so.sh脚本文件,至于脚本文件怎么写就看各自的需求啦