You need to enable JavaScript to run this app. 如何为CMAKE ExternalProject_Add_Step设置PATH环境变量?
优惠活动
大模型
产品
解决方案
定价
更多

如何为CMAKE ExternalProject_Add_Step设置PATH环境变量?

解决方法

方案1:使用STEP_ENVIRONMENT参数(CMake 3.15+ 支持,推荐)

ExternalProject_Add_Step支持STEP_ENVIRONMENT参数,可以自定义该步骤运行时的环境变量,你可以直接把depot_tools路径追加到PATH最前面,这样不仅fetch命令能被找到,fetch运行过程中调用的其他depot_tools里的工具也能正常识别。
跨平台适配写法如下:

ExternalProject_Get_Property(${PROJECT_NAME} SOURCE_DIR)
# 根据平台选择PATH分隔符
if(WIN32)
  set(PATH_SEP ";")
else()
  set(PATH_SEP ":")
endif()

ExternalProject_Add_Step(
        ${PROJECT_NAME} fetch-webrtc
        COMMAND fetch --nohooks webrtc
        DEPENDEES mkdir-webrtc
        # 把depot_tools目录放在PATH最前面
        STEP_ENVIRONMENT "PATH=${SOURCE_DIR}${PATH_SEP}$ENV{PATH}"
)

方案2:全局配置所有步骤的环境变量

如果你后续的所有WebRTC构建步骤都需要用到depot_tools里的工具,可以直接在定义ExternalProject的时候就配置好全局环境变量,不用每个步骤单独加:

if(WIN32)
  set(PATH_SEP ";")
else()
  set(PATH_SEP ":")
endif()

ExternalProject_Add(
        ${PROJECT_NAME} 
        GIT_REPOSITORY https://chromium.googlesource.com/chromium/tools/depot_tools.git
        CONFIGURE_COMMAND "" 
        UPDATE_COMMAND "" 
        PATCH_COMMAND "" 
        BUILD_COMMAND "" 
        INSTALL_COMMAND ""
        # 全局配置环境变量,所有后续自定义步骤都会继承这个PATH
        # <SOURCE_DIR>是ExternalProject内置占位符,会自动替换为depot_tools的源码目录
        BUILD_ENVIRONMENT "PATH=<SOURCE_DIR>${PATH_SEP}$ENV{PATH}"
)

方案3:低版本CMake兼容方案

如果你用的CMake版本低于3.15,不支持上述环境变量参数,可以直接把PATH修改逻辑包装到COMMAND里:

ExternalProject_Get_Property(${PROJECT_NAME} SOURCE_DIR)
if(WIN32)
  ExternalProject_Add_Step(
          ${PROJECT_NAME} fetch-webrtc
          COMMAND set PATH=${SOURCE_DIR};%PATH% && fetch --nohooks webrtc
          DEPENDEES mkdir-webrtc
  )
else()
  ExternalProject_Add_Step(
          ${PROJECT_NAME} fetch-webrtc
          # 注意此处$$PATH是为了避免CMake在配置阶段提前展开变量,留到构建执行shell时再展开
          COMMAND export PATH=${SOURCE_DIR}:$$PATH && fetch --nohooks webrtc
          DEPENDEES mkdir-webrtc
  )
endif()

内容的提问来源于stack exchange,提问作者dbotha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:30:04