非GPU环境下配置TorchVision时缺失libtorchvision.so文件的解决方案咨询
解决非GPU机器上TorchVision的CMake配置与libtorchvision.so获取问题
作为CMake新手,你遇到的这两个错误其实都是因为手动复制Targets文件破坏了CMake的导入路径逻辑,咱们一步步梳理解决方法,重点针对非GPU(CPU-only)环境:
先复盘你遇到的问题
- 初始错误:
set_target_properties Can not find target to add properties to: TorchVision::TorchVision,这是因为CMake找不到TorchVision的Targets定义文件 - 手动复制
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
如果找不到合适的预编译包,这是最稳妥的方案:
- 克隆并切换到匹配版本的TorchVision源码:
git clone https://github.com/pytorch/vision.git cd vision git checkout v0.15.0 # 替换成和你的LibTorch对应的版本,版本对应关系可查TorchVision官方说明 - 配置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版本的库
- 编译并安装:
编译完成后,make -j$(nproc) # 用所有CPU核心加速编译 make installlibtorchvision.so会被自动安装到你的LibTorch的lib目录下,同时正确的CMake配置文件(包括Targets文件)会被放到LibTorch/share/cmake/TorchVision目录 - 回到你的项目,正常调用
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
相关产品推荐
相关产品推荐

