33 lines
884 B
Bash
33 lines
884 B
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
# 设置输入和输出目录
|
|||
|
input_dir="sy"
|
|||
|
output_dir="build"
|
|||
|
lib_dir="lib"
|
|||
|
|
|||
|
rm -rf build
|
|||
|
|
|||
|
# 确保输出目录存在
|
|||
|
mkdir -p "$output_dir"
|
|||
|
|
|||
|
rm ./lib/sylib.o
|
|||
|
clang -fPIC -c ./lib/sylib.c -o ./lib/sylib.o
|
|||
|
# gcc -c ./lib/sylib.c -o ./lib/sylib.o
|
|||
|
rm ./lib/libsylib.so
|
|||
|
clang -shared ./lib/sylib.o -o ./lib/libsylib.so
|
|||
|
# ar rcs ./lib/libsy.a ./lib/sylib.o
|
|||
|
|
|||
|
# 遍历sy目录下的所有文件
|
|||
|
for file in "$input_dir"/*.c; do
|
|||
|
# 检查文件是否存在
|
|||
|
if [ -f "$file" ]; then
|
|||
|
# 获取文件名(不含路径)
|
|||
|
filename=$(basename -- "$file")
|
|||
|
# 移除文件扩展名,假设输出的可执行文件不需要扩展名
|
|||
|
basename="${filename%.*}"
|
|||
|
|
|||
|
# 编译文件,链接库libsysy.a,设置头文件路径为lib/sylib.h
|
|||
|
clang "$file" -I "$lib_dir" -L"$lib_dir" -lsylib -o "$output_dir/$basename"
|
|||
|
fi
|
|||
|
done
|