forked from NUDT-compiler/nudt-compiler-cpp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
#!/bin/bash
|
|
# fix_includes.sh - 修改所有include路径为相对于项目根目录
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
echo "Fixing include paths in all source files..."
|
|
|
|
# 处理 src/ 下所有层级的文件
|
|
for dir in src src/frontend src/ir src/ir/passes src/ir/analysis src/irgen src/sem src/mir src/mir/passes src/utils; do
|
|
[[ ! -d "$dir" ]] && continue
|
|
|
|
# 计算相对前缀
|
|
case "$dir" in
|
|
src) prefix="." ;;
|
|
src/frontend|src/utils) prefix=".." ;;
|
|
src/ir|src/irgen|src/sem|src/mir) prefix="../.." ;;
|
|
src/ir/passes|src/ir/analysis|src/mir/passes) prefix="../../.." ;;
|
|
*) continue ;;
|
|
esac
|
|
|
|
find "$dir" -maxdepth 1 -name '*.cpp' -o -name '*.h' | while read -r f; do
|
|
[ "$f" = "src/main.cpp" ] && continue
|
|
|
|
# 修改 include 路径
|
|
sed -i "s|#include \"ir/|#include \"${prefix}/include/ir/|g" "$f"
|
|
sed -i "s|#include \"irgen/|#include \"${prefix}/include/irgen/|g" "$f"
|
|
sed -i "s|#include \"sem/|#include \"${prefix}/include/sem/|g" "$f"
|
|
sed -i "s|#include \"mir/|#include \"${prefix}/include/mir/|g" "$f"
|
|
sed -i "s|#include \"utils/|#include \"${prefix}/include/utils/|g" "$f"
|
|
sed -i "s|#include \"frontend/|#include \"${prefix}/src/frontend/|g" "$f"
|
|
|
|
echo " Fixed: $f"
|
|
done
|
|
done
|
|
|
|
# 处理 include/ 下的文件
|
|
for dir in include include/ir include/irgen include/sem include/mir include/utils; do
|
|
[[ ! -d "$dir" ]] && continue
|
|
find "$dir" -maxdepth 1 -name '*.h' | while read -r f; do
|
|
sed -i "s|#include \"ir/|#include \"ir/|g" "$f" # include下的不用改
|
|
sed -i "s|#include \"frontend/|#include \"../src/frontend/|g" "$f"
|
|
echo " Fixed: $f"
|
|
done
|
|
done
|
|
|
|
echo "Done!"
|