You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VSCode基新版Unified Vitis IDE中使用Git做版本控制?

新版Unified Vitis(VSCode版)的Git协作工作流问题

我的问题和某Stack Overflow问题类似,但使用Git而非Mercurial,且基于VSCode架构的新版「Unified Vitis」(而非旧版Eclipse架构的Vitis)。新旧版Vitis差异极大,因此本问题并非重复提问。

根据官方说明,新旧版Vitis均“支持”Git,但我始终找不到可落地的多人协作工作流。旧版Vitis具备「导入/导出项目向导」功能,但新版已移除;Xilinx官方论坛提到该功能计划在2024.1版本恢复。用户指南UG1400(2023-12-13)的「源代码控制」章节仅介绍了在Vitis GUI中执行git add的操作,完全未说明如何实现可协作的项目版本控制。

核心痛点

Vitis版本控制的核心问题在于它会生成大量包含绝对路径的文件。即便使用自动生成的.gitignore,仍会纳入大量IDE内部文件,这些文件中的绝对路径会导致其他开发者拉取代码后出现构建错误。

当前解决方案

我目前的做法是不对Vitis管理的平台和应用文件夹做版本控制,而是通过Vitis Python CLI,仅将Vitis必需的「关键文件」(链接脚本、CMake文件等)和一个空源文件纳入Git管理。CMakeLists.txt指定从原始源目录读取代码,目录结构如下:

"ROOT_PATH"
├── build-vitis        (不做版本控制!
│                       Vitis相关:「platform」和「application」文件夹。)
├── build-vivado       (Vivado输出文件,如.xsa文件)
├── src
│   ├── CMakeLists.txt
│   ├── lscript.ld
│   ├── main.cpp
|   |    (更多源码在子目录中...)
│   ├── NOTUSED.cpp
|   |    (空文件,用于让Vivado识别为存在源码)
│   └── UserConfig.cmake
└── tools
    ├── build_app.py
    └── ...

简化后的build_app.py代码如下:

import vitis
import os

ROOT_PATH = <包含`tools`目录的路径,用户指定或从当前目录推导>

# 属于Vitis的文件夹,已加入.gitignore
VITIS_BUILD_DIR_PATH = os.path.abspath(
    os.path.join(ROOT_PATH, "build-vitis")
)
os.makedirs(VITIS_BUILD_DIR_PATH, exist_ok=True)

EXPECTED_XSA_FILE_PATH = os.path.abspath(
    os.path.join(ROOT_PATH, "build-vivado", "<filename>.xsa")
)

COMPONENT_NAME = "MYCOMPONENT"

MAIN_SRC_PATH = os.path.join(ROOT_PATH, "src")

client = vitis.create_client()
client.set_workspace(path=VITIS_BUILD_DIR_PATH)

PLATFORM_NAME = "platform_baremetal"
platform = client.create_platform_component(
    name=PLATFORM_NAME,
    hw=EXPECTED_XSA_FILE_PATH,
    os="standalone",
    cpu="<mycpu>",
)

platform = client.get_platform_component(name=PLATFORM_NAME)
status = platform.build()

comp = client.create_app_component(
    name=COMPONENT_NAME,
    platform=os.path.join(
        VITIS_BUILD_DIR_PATH,
        PLATFORM_NAME,
        "export",
        PLATFORM_NAME,
        f"{PLATFORM_NAME}.xpfm",
    ),
    domain="<mydomainname>",
)

comp = client.get_component(name=COMPONENT_NAME)
status = comp.import_files(
    from_loc=os.path.join(MAIN_SRC_PATH),
    files=[
        # 注意:实际C/C++源码未导入!
        "CMakeLists.txt",
        "UserConfig.cmake",
        "lscript.ld",
        "NOTUSED.cpp" # 空文件
    ],
    dest_dir_in_cmp="src",
)

comp.build()

克隆仓库后,通过vitis -s tools/build_app.py执行脚本(实际脚本会检查平台/应用是否存在,仅在需要时更新)。

现有方案的缺点

  • 若通过Vitis修改了配置文件(CMake、链接脚本等),需手动将改动复制回src目录才能提交到Git;
  • 通过CMake指定源码目录后,在Vitis中编辑源码时,IDE无法识别头文件和命名空间,导致语法高亮、代码补全等功能异常。

请问是否有更优的解决方案?


内容的提问来源于Stack Exchange,提问作者Adomas Baliuka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:42:03