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

非GPU环境下配置TorchVision时缺失libtorchvision.so文件的解决方案咨询

解决非GPU机器上TorchVision的CMake配置与libtorchvision.so获取问题

作为CMake新手,你遇到的这两个错误其实都是因为手动复制Targets文件破坏了CMake的导入路径逻辑,咱们一步步梳理解决方法,重点针对非GPU(CPU-only)环境:

先复盘你遇到的问题

  1. 初始错误:set_target_properties Can not find target to add properties to: TorchVision::TorchVision,这是因为CMake找不到TorchVision的Targets定义文件
  2. 手动复制TorchVisionTargets.cmake和TorchVisionTargets-release.cmake后,新错误提示找不到libtorchvision.so——这是因为Targets文件里的_IMPORT_PREFIX是根据文件所在位置自动计算的,你手动移动文件后,路径计算完全错误了

正确解决思路:不要手动复制Targets文件

咱们有两种可靠的方式获取CPU版的libtorchvision.so并正确配置CMake:

方法1:使用官方预编译的CPU版TorchVision

如果有匹配你LibTorch版本的预编译包,这是最快的方式:

  • 首先确保你用的是CPU-only版本的LibTorch,TorchVision的版本必须和LibTorch严格对应(比如LibTorch 2.0.0对应TorchVision 0.15.0)
  • 下载对应版本的CPU预编译TorchVision包,解压后,在你的项目CMakeLists.txt中直接指定TorchVision_DIR为解压目录下的share/cmake/TorchVision,比如:
    set(TorchVision_DIR "/path/to/unzipped/torchvision/share/cmake/TorchVision")
    find_package(TorchVision REQUIRED)
    
  • 这样CMake会自动找到正确的Targets文件和libtorchvision.so路径,不需要手动复制任何文件

方法2:手动从源码编译CPU版TorchVision

如果找不到合适的预编译包,这是最稳妥的方案:

  1. 克隆并切换到匹配版本的TorchVision源码:
    git clone https://github.com/pytorch/vision.git
    cd vision
    git checkout v0.15.0  # 替换成和你的LibTorch对应的版本,版本对应关系可查TorchVision官方说明
    
  2. 配置CMake为CPU编译:
    mkdir build && cd build
    cmake .. -DCMAKE_PREFIX_PATH=/path/to/your/cpu-only/libtorch -DWITH_CUDA=OFF
    
    • /path/to/your/cpu-only/libtorch是你CPU版LibTorch的根目录
    • -DWITH_CUDA=OFF强制禁用GPU支持,确保生成的是纯CPU版本的库
  3. 编译并安装:
    make -j$(nproc)  # 用所有CPU核心加速编译
    make install
    
    编译完成后,libtorchvision.so会被自动安装到你的LibTorch的lib目录下,同时正确的CMake配置文件(包括Targets文件)会被放到LibTorch/share/cmake/TorchVision目录
  4. 回到你的项目,正常调用find_package(TorchVision REQUIRED)即可,不需要额外手动配置路径

额外提示:正确的CMakeLists.txt示例

确保Torch和TorchVision的调用顺序正确,这里给你一个参考模板:

cmake_minimum_required(VERSION 3.18)
project(YourTorchVisionProject)

# 先导入Torch
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")

# 再导入TorchVision(如果是手动编译的,这一步可以省略TorchVision_DIR,因为已经安装到LibTorch目录里了)
# set(TorchVision_DIR "/path/to/libtorch/share/cmake/TorchVision")
find_package(TorchVision REQUIRED)

# 添加你的可执行文件
add_executable(your_app main.cpp)

# 链接Torch和TorchVision库
target_link_libraries(your_app PRIVATE ${TORCH_LIBRARIES} TorchVision::TorchVision)

# 设置C++标准(Torch需要C++17及以上)
set_property(TARGET your_app PROPERTY CXX_STANDARD 17)

内容的提问来源于stack exchange,提问作者pts-09

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:57:40