1.获取最新的源代码
2.理解这个脚本原理
‘
#!/bin/bash
set -e
# Define architecture arrays
ARCH_NAMES=(“mac” “arm64”)
ARCH_VALUES=(“x86_64” “arm64”)
WORKSPACE=”workspace”
# Get architecture value from name
get_arch_value() {
localarch_name=$1
case$arch_namein
“mac”)echo”x86_64″ ;;
*)echo”$arch_name” ;;
esac
}
# Clean and create workspace
cleanup_and_setup() {
rm-rf”$WORKSPACE”
mkdir-p”$WORKSPACE”
}
# Extract source code
extract_source() {
tar-xjf”cpr-1.11.0.tar.bz2″-C”$WORKSPACE”
}
# Build single architecture
build_single_arch() {
localarch_name=$1
localarch_value=$(get_arch_value”$arch_name”)
localbuild_dir=”$WORKSPACE/build/$arch_name”
localinstall_dir=”$WORKSPACE/install/$arch_name”
# Set dependency paths
localLIBCURL_ROOT=”$(pwd)/../curl/$arch_name”
localOPENSSL_ROOT=”$(pwd)/../OpenSSL/$arch_name”
localZLIB_ROOT=”$(pwd)/../libz/$arch_name”
# Check dependencies
forpathin”$LIBCURL_ROOT””$OPENSSL_ROOT””$ZLIB_ROOT”; do
if [ !-d”$path” ]; then
echo”Error: Missing dependency for $arch_name: $path”
exit1
fi
done
# Configure CMake
cmake-S”$WORKSPACE/cpr-1.11.0″-B”$build_dir”\
-G”Ninja”\
-DCMAKE_INSTALL_PREFIX=”$install_dir”\
-DCMAKE_BUILD_TYPE=Release\
-DCMAKE_OSX_ARCHITECTURES=”$arch_value”\
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.15\
-DCPR_BUILD_TESTS=OFF\
-DCPR_FORCE_USE_SYSTEM_CURL=OFF\
-DCMAKE_PREFIX_PATH=”$LIBCURL_ROOT;$OPENSSL_ROOT;$ZLIB_ROOT”
# Build and install
cmake–build”$build_dir”–targetinstall
# Fix dynamic library paths
locallib_path=”$install_dir/lib/libcpr.1.11.0.dylib”
install_name_tool-id”@rpath/libcpr.1.11.0.dylib””$lib_path”
install_name_tool-change”/usr/lib/libcurl.4.dylib””@rpath/libcurl.4.dylib””$lib_path”
}
# Create universal binary
create_universal() {
localuniversal_dir=”$WORKSPACE/install/universal”
mkdir-p”$universal_dir/lib”
# Merge libraries
lipo-create\
“$WORKSPACE/install/mac/lib/libcpr.1.11.0.dylib”\
“$WORKSPACE/install/arm64/lib/libcpr.1.11.0.dylib”\
-output”$universal_dir/lib/libcpr.1.11.0.dylib”
# Copy headers
cp-R”$WORKSPACE/install/mac/include””$universal_dir/”
# Fix universal library paths
locallib_path=”$universal_dir/lib/libcpr.1.11.0.dylib”
install_name_tool-id”@rpath/libcpr.1.11.0.dylib””$lib_path”
install_name_tool-change”/usr/lib/libcurl.4.dylib””@rpath/libcurl.4.dylib””$lib_path”
}
main() {
cleanup_and_setup
extract_source
# Build architectures
forarch_namein”${ARCH_NAMES[@]}”; do
echo”Building for $arch_name architecture…”
build_single_arch”$arch_name”
done
# Create universal binary
echo”Creating universal binary…”
create_universal
echo”All builds completed successfully”
}
main
‘
3.生成对应三方库后,直接再打包install
#!/bin/bash
# Auto Build Script
# wangxiaoyan 2020/3/26
curdir=$(cd $(dirname $0); pwd)
echo ${curdir}
./update-vbl-launch.sh
cd ${curdir}
./cmake-mac.sh
cd ${curdir}/../../build
xcodebuild -project VBL.xcodeproj -target ALL_BUILD -sdk macosx -configuration Debug
# 添加安装步骤
cmake –install . –prefix ${curdir}/../../install –config Debug
cd ${curdir}
./testfiles_mac-copy.sh
./wes_mac_copy.sh
4.执行命令:
-
压缩包 :tar -jcf cpr-1.11.0.tar.bz2 cpr-1.11.0
-
执行脚本 :
(权限 chmod a+x filename) -
直接当前目录下运行脚本
参考链接 : https://elesos.github.io/posts/linux-command-2/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)