1function(changerpath target_so target_name link_sos) 2 set(depend_so "") 3 foreach(link_so ${link_sos}) 4 set(some-file "${CMAKE_SOURCE_DIR}/build/${target_name}_${link_so}.txt") 5 set(some-file1 "${CMAKE_SOURCE_DIR}/build/${target_name}_${link_so}1.txt") 6 set(some-file2 "${CMAKE_SOURCE_DIR}/build/${target_name}_${link_so}2.txt") 7 add_custom_command( 8 OUTPUT 9 ${some-file} 10 COMMAND 11 otool -L ${target_so} | tail -n +2 | grep ${link_so} | head -n1 > ${some-file} 12 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build" 13 VERBATIM 14 ) 15 add_custom_command( 16 OUTPUT 17 ${some-file1} 18 COMMAND 19 cat ${some-file} | cut -d " " -f 1 | sed -E "s/^.//g" > ${some-file1} 20 DEPENDS 21 ${some-file} 22 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build" 23 VERBATIM 24 ) 25 add_custom_command( 26 OUTPUT 27 ${some-file2} 28 COMMAND 29 awk -F "/" "{print $NF}" ${some-file1} > ${some-file2} 30 DEPENDS 31 ${some-file1} 32 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build" 33 VERBATIM 34 ) 35 add_custom_target( 36 link_${target_name}_${link_so} ALL 37 COMMAND install_name_tool -change `cat ${some-file1}` @rpath/`cat ${some-file2}` ${target_so} 38 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build" 39 DEPENDS ${target_so} ${some-file1} ${some-file2} 40 COMMENT "install tool name" 41 ) 42 add_custom_command( 43 TARGET link_${target_name}_${link_so} 44 POST_BUILD 45 COMMAND rm ${some-file} ${some-file1} ${some-file2} 46 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/build" 47 VERBATIM 48 ) 49 if(depend_so) 50 add_dependencies(link_${target_name}_${link_so} link_${target_name}_${depend_so}) 51 endif() 52 set(depend_so ${link_so}) 53 endforeach() 54endfunction() 55