Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
129a0c96c2 |
|
|
@ -1,9 +1,16 @@
|
|||
# 定义一个名为 "changerpath" 的CMake函数,该函数接受以下参数:target_so、target_name 和 link_sos
|
||||
function(changerpath target_so target_name link_sos)
|
||||
# 初始化变量 depend_so,用于跟踪上一个共享库的名称
|
||||
set(depend_so "")
|
||||
|
||||
# 对传入的 link_sos 列表进行循环迭代
|
||||
foreach(link_so ${link_sos})
|
||||
# 构建文件路径 some-file,用于存储 otool 命令的输出结果
|
||||
set(some-file "${CMAKE_SOURCE_DIR}/build/${target_name}_${link_so}.txt")
|
||||
set(some-file1 "${CMAKE_SOURCE_DIR}/build/${target_name}_${link_so}1.txt")
|
||||
set(some-file2 "${CMAKE_SOURCE_DIR}/build/${target_name}_${link_so}2.txt")
|
||||
|
||||
# 添加自定义构建命令,该命令执行 otool 命令,获取目标共享库的依赖关系
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${some-file}
|
||||
|
|
@ -12,6 +19,8 @@ function(changerpath target_so target_name link_sos)
|
|||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
# 添加自定义构建命令,该命令从上一个命令的输出中提取共享库的名称
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${some-file1}
|
||||
|
|
@ -22,6 +31,8 @@ function(changerpath target_so target_name link_sos)
|
|||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
# 添加自定义构建命令,该命令从共享库名称中提取文件名
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${some-file2}
|
||||
|
|
@ -32,6 +43,8 @@ function(changerpath target_so target_name link_sos)
|
|||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
# 添加自定义目标,用于执行 install_name_tool 命令,修改目标共享库的依赖关系
|
||||
add_custom_target(
|
||||
link_${target_name}_${link_so} ALL
|
||||
COMMAND install_name_tool -change `cat ${some-file1}` @rpath/`cat ${some-file2}` ${target_so}
|
||||
|
|
@ -39,6 +52,8 @@ function(changerpath target_so target_name link_sos)
|
|||
DEPENDS ${target_so} ${some-file1} ${some-file2}
|
||||
COMMENT "install tool name"
|
||||
)
|
||||
|
||||
# 添加自定义构建命令,该命令在 link_${target_name}_${link_so} 目标构建后删除临时文件
|
||||
add_custom_command(
|
||||
TARGET link_${target_name}_${link_so}
|
||||
POST_BUILD
|
||||
|
|
@ -46,9 +61,13 @@ function(changerpath target_so target_name link_sos)
|
|||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
# 如果 depend_so 变量不为空,将当前目标依赖于上一个目标
|
||||
if(depend_so)
|
||||
add_dependencies(link_${target_name}_${link_so} link_${target_name}_${depend_so})
|
||||
endif()
|
||||
|
||||
# 将 depend_so 设置为当前共享库的名称,以便在下一次迭代中使用
|
||||
set(depend_so ${link_so})
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
|
|
|||
Loading…
Reference in New Issue