目的
本文目的是记录在C++中使用libtorch编译代码的过程中所遇到的问题。
环境信息如下表所示:
| 项目 | 详细 |
|---|---|
| 芯片 | Apple M1 Pro |
| MacOS | Sonoma 14.2 |
| IDE | Visual Studio Code v1.85.1 |
| CMake | v3.22.2 |
| libtorch | v2.3.0 |
代码
代码目录结构:

test.cpp内容:
#include <torch/torch.h>
#include <iostream>
int main()
{
torch::Tensor tensor = torch::eye(3);
std::cout << tensor << std::endl;
}
CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.0)
project(libtorch_test)
set(CMAKE_CXX_STANDARD 17)
set(SOURCE_DIR src)
add_executable(libtorch_test ${SOURCE_DIR}/test.cpp)
# libtorch
set(Torch_DIR ${PROJECT_SOURCE_DIR}/third_party/libtorch/share/cmake/Torch)
find_package(Torch REQUIRED)
message(STATUS "Torch version: ${Torch_VERSION}")
# link libtorch
target_link_libraries(libtorch_test ${TORCH_LIBRARIES})
编译脚本:
cd build cmake .. make
执行:
./libtorch_test
问题
执行阶段报错信息如下所示:

从信息中可知,问题原因是在库文件搜索路径中无法找到libomp.dylib,从而导致执行失败。
解决方法
第一步:使用homebrew安装libomp。安装完成后,libomp位于/opt/homebrew/opt/libomp路径下。
第二步:在/usr/local/bin路径下,建立指向/opt/homebrew/opt/libomp/lib/libomp.dylib的符号链接。
扩展思考
本人最初的思路是想在CMakeLists.txt中增加库文件的搜索路径,但是没有成功。如果有人知道如何指定库文件的搜索路径,请留言赐教。谢谢!