答案 【下面一堆废话可以不用看】
换cmake版本试试,换到3.4以上版本,我换的版本是3.31, https://github.com/Kitware/CMake/releases/tag/v3.31.6
前提
链接地址如下,因为已经closed了,所以我写篇文章,希望可以帮到大家。
https://github.com/laugh12321/TensorRT-YOLO/issues/124
开发环境
基础环境:
jetson orin nx engineering performance developer kit super
jetpack 6.2 【https://developer.nvidia.com/embedded/jetpack-sdk-62】
cuda: 12.6.68
cudnn: 9.3.0.75
tensorrt: 10.3.0.30
docker容器环境【我主要在这里进行开发】:
docker image: nvcr.io/nvidia/l4t-tensorrt:r10.3.0-devel
cmake version: 3.14
考虑到适配性问题,我下载10.3.0的tensorrt镜像,cuda版本和cudnn版本与基础环境保持一致。
查看cuda版本命令nvcc -V
, 当然也可以用dpkg -l|grep cuda
查看安装的包
可以用dpkg -l|grep cudnn
查看安装的cudnn
过程
先说说过程,最开始遇到的问题是
开始用快速编译安装教程执行cmake -S . -B build -DTENSORRT_PATH=/usr/local/tensorrt -DBUILD_PYTHON=ON
命令的时候发现失败,报错
Policy “CMP0091” is not known to this version of CMake.
然后我比较鸡贼,发现你报错,查了一下一时没找到解决方法,就打算注释掉试试。其实我看到了或者说是我忽略了解决办法,问题答案就在这个https://github.com/conan-io/conan/issues/12458里,不过我忽略了。
我其实查看了我的cmake版本, 如果此时我直接更新或者重现安装一个新的超过3.4以上版本的cmake就没有后续的问题。不过事情哪有那么顺利,我有点鸡贼,我想你通不过我就不要这条规则,想着就是一条Policy能有啥问题呢,然后就直接给注释掉了,注释完确实就可以了,命令完成了。
不过执行cmake --build build -j$(nproc) --config Release
就开始报错了,错误就回到了开头,我在TensorRT-YOLO仓库的issue里查找,终于翻了一模一样的错误,不过作者在此issue下的回答我尝试了,并没有解决我的问题。
后续我还尝试了换了编译方式,尝试用xmake,不过遇到了别的问题,说我缺少Python.h头文件,我找了一大圈,解决办法都是安装apt install python3-dev类似的,尝试了但是就是没解决我的问题。
当然一开始我就在问AI,但是各种报错问题太多了,可能答案被淹没了我没看到。我换成Claude 3.7问了一下【Policy “CMP0091” is not known to this version of CMake.】这个问题,因为我想着还是不能取巧,从源头解决试试。然后被告知,
You're using CMake version 3.14.4, which confirms why you're encountering the error about policy CMP0091. This policy was introduced in CMake 3.15, so your current version doesn't recognize it.
我看到之后就非常生气,我知道浪费时间了,问题可能就在此处,然后顺理成章地换到cmake 3.31.6, 问题就解决啦。然后后续再编译也没有报错,可以得知issue 124的问题可能也是cmake版本问题导致的。
感悟
小聪明可能会当误你走捷径。