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

如何配置CMake项目使用Conda安装的PyTorch C++ API

问题根因

报错来自两个配置错误:

  • 你设置的CMAKE_PREFIX_PATH层级错误:追加的路径写到了Torch子目录,会导致CMake搜索PyTorch依赖包时路径断层,找不到同目录下的其他依赖配置。
  • conda默认安装的libprotobuf仅包含运行时库,不带CMake导出的ProtobufConfig.cmake配置文件,PyTorch绑定的Caffe2构建脚本默认走CONFIG模式检索Protobuf,找不到就直接终止配置。
配置步骤(无需源码编译PyTorch)
  1. 先在对应conda环境中补全带CMake配置的依赖包
conda activate ML
conda install -c conda-forge protobuf

安装完成后可以在$CONDA_PREFIX/lib/cmake/protobuf路径下找到对应的ProtobufConfig.cmake文件。

  1. 替换原有CMakeLists.txt为如下配置,避免硬编码路径,同时修正搜索路径:
cmake_minimum_required(VERSION 3.19)
project(PyTorch_Cpp_HelloWorld CXX)

# 自动读取当前激活的conda环境路径,协作者无需修改配置
if(NOT DEFINED ENV{CONDA_PREFIX})
    message(FATAL_ERROR "配置前请先激活安装了PyTorch的ML conda环境")
endif()
set(CONDA_ENV_ROOT $ENV{CONDA_PREFIX})
set(PYTORCH_ROOT "${CONDA_ENV_ROOT}/lib/python3.10/site-packages/torch")

# 修正CMAKE_PREFIX_PATH层级,同时加入conda环境根目录让CMake能找到环境内安装的依赖
list(APPEND CMAKE_PREFIX_PATH
    "${PYTORCH_ROOT}/share/cmake"
    "${CONDA_ENV_ROOT}"
)

find_package(Protobuf REQUIRED CONFIG)
find_package(Torch REQUIRED CONFIG)

# 示例:添加可执行文件与链接配置
add_executable(torch_demo main.cpp)
target_link_libraries(torch_demo PRIVATE ${TORCH_LIBRARIES})
# PyTorch 2.x 及以上版本要求C++17及以上标准
set_target_properties(torch_demo PROPERTIES CXX_STANDARD 17)
  1. 执行项目配置时必须提前激活ML conda环境:
mkdir build && cd build
conda activate ML
cmake ..
注意事项
  • 不要通过apt安装系统级的libprotobuf-dev,其版本和conda环境中PyTorch依赖的Protobuf版本大概率不匹配,会出现ABI兼容问题导致运行时崩溃。
  • 如果仍提示找不到Protobuf,执行cmake时追加参数-DProtobuf_DIR=$CONDA_PREFIX/lib/cmake/protobuf即可强制指定配置路径。
  • 不要把CMAKE_PREFIX_PATH写到Torch子目录层级,写到share/cmake层级即可,CMake会自动检索该路径下所有包的配置文件。
  • 协作者只需要在自己的conda环境中按相同方式安装PyTorch和protobuf,激活环境后即可直接编译,不需要修改CMake配置,也不需要源码编译PyTorch。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:31:01