Windows10下vcpkg构建GDAL Python绑定:CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH路径异常
解决CMake查找SWIG失败的替代方案
1. 直接通过CMake变量传递SWIG路径
在vcpkg构建时,通过CMAKE_ARGS显式指定SWIG的路径,绕开系统环境变量和CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH的限制:
- 构建命令中添加参数:
此方式直接覆盖CMake的默认查找逻辑,无需依赖系统环境变量配置。vcpkg install --cmake-args "-DSWIG_EXECUTABLE=C:/src/swigwin-4.1.1/swig.exe" "-DSWIG_DIR=C:/src/swigwin-4.1.1/Lib"
2. 临时修改vcpkg工具链的搜索路径
在自动化脚本中,临时修改vcpkg的CMake工具链文件(通常路径为vcpkg/scripts/buildsystems/vcpkg.cmake),将SWIG路径加入CMAKE_PROGRAM_PATH:
list(APPEND CMAKE_PROGRAM_PATH "C:/src/swigwin-4.1.1")
这会让CMake优先搜索该路径查找可执行文件,不受CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH设置的影响。
3. 给GDAL的vcpkg端口添加自定义配置
如果需要长期复用,可修改GDAL的vcpkg端口配置:
- 在GDAL端口的
portfile.cmake中添加:
强制GDAL构建时使用指定的SWIG路径,跳过默认的环境变量搜索流程。set(SWIG_EXECUTABLE "C:/src/swigwin-4.1.1/swig.exe" CACHE PATH "SWIG executable path") set(SWIG_DIR "C:/src/swigwin-4.1.1/Lib" CACHE PATH "SWIG library directory")
4. 临时为vcpkg构建进程设置PATH
在启动vcpkg构建前,临时将SWIG路径加入当前shell的PATH环境变量:
set PATH=C:\src\swigwin-4.1.1;%PATH% vcpkg install ...
让vcpkg的CMake进程能通过当前进程的PATH找到SWIG,规避CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH的路径不匹配问题。
以上方案均无需手动安装GDAL,完全适配自动化构建流程。
内容的提问来源于stack exchange,提问作者kep
相关产品推荐
相关产品推荐

