如何调整CMake自动生成路径?Windows下apriltags安装遇路径错误
检查scikit-build与setuptools的路径处理逻辑
从_skbuild目录可判断项目用了scikit-build构建,你指定NMake Makefiles后,工具链可能在拼接路径时保留了类Unix风格的./相对路径标识,在Windows下被解析成非法的文件夹名。可以尝试:- 在setup.py的cmake_args中添加
-DCMAKE_INSTALL_PREFIX=./install_temp,指定明确的临时安装前缀,避免自动路径拼接出问题; - 在setup.py中添加setuptools的bdist_wheel配置,强制指定输出目录,比如:
setup( # 其他原有配置 options={ "bdist_wheel": {"dist_dir": "./dist"} } )
- 在setup.py的cmake_args中添加
验证NMake Makefile的路径输出
进入_skbuild/win-amd64-3.8/build目录,打开生成的Makefile,搜索install或wheel相关的目标规则,查看是否存在带./的路径定义。如果有,手动修改为Windows兼容的写法(比如去掉前缀的.),再重新执行安装命令,看是否解决问题。也可以直接执行cmake --build . --target install手动完成安装,判断错误是来自CMake/Makefile阶段还是setuptools的wheel打包阶段。调整CMake的路径相关配置
在cmake_args中添加-DCMAKE_USE_RELATIVE_PATHS=OFF,强制CMake生成绝对路径,避免相对路径拼接时产生多余的.符号。另外检查项目根目录的CMakeLists.txt,看INSTALL指令中是否有DESTINATION ./xxx这类写法,改成DESTINATION xxx去掉前缀的.。尝试更换CMake生成器
既然你已经安装了MSVC Buildtools,无需Visual Studio IDE也可以使用MSVC原生生成器。把cmake_args里的-GNMake Makefiles替换为-G"Visual Studio 17 2022" -A x64(根据你的Buildtools版本调整生成器名称,比如VS2019对应Visual Studio 16 2019),Windows原生生成器对路径的兼容性更好,大概率能避开NMake带来的路径解析问题。
内容的提问来源于stack exchange,提问作者Eschee

