import xml.etree.ElementTree as ET
import os

def add_include_path(project_file, new_path):
    # 检查文件是否存在
    if not os.path.exists(project_file):
        print(f"项目文件 {project_file} 不存在!")
        return

    # 解析 XML 文件
    tree = ET.parse(project_file)
    root = tree.getroot()

    # 定位到所有 IncludePath 节点
    include_path_nodes = root.findall(".//IncludePath")
    if not include_path_nodes:
        print("未找到任何 IncludePath 节点,无法添加路径。")
        return

    updated = False
    for include_path_node in include_path_nodes:
        # 获取当前 IncludePath 的值
        include_paths = include_path_node.text.split(";") if include_path_node.text else []

        # 检查是否已经包含 new_path
        if new_path in include_paths:
            print(f"路径 '{new_path}' 已存在于一个 IncludePath 节点中,无需重复添加。")
            continue

        # 添加新路径
        include_paths.append(new_path)
        include_path_node.text = ";".join(include_paths)
        updated = True
        print(f"路径 '{new_path}' 已成功添加到一个 IncludePath 节点中。")

    if updated:
        # 保存修改
        tree.write(project_file, encoding="utf-8", xml_declaration=True)
        print(f"项目文件已更新:{project_file}")
    else:
        print("未对项目文件进行任何修改。")

# 示例用法
if __name__ == "__main__":
    # 替换为您的 .uvprojx 文件路径
    project_file_path = r"C:\Mac\Home\Desktop\MR_test\MDK-ARM\MR_test.uvprojx"
    include_path_to_add = r"..\User"
    add_include_path(project_file_path, include_path_to_add)