You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Conan中设置Windows 10 1809作为构建目标版本?

解决Conan中设置Windows 10 1809最低目标版本的问题

问题分析

  • Conan的Windows设置体系里确实没有os.version选项,直接设置会报错是正常的设计逻辑。
  • 你尝试指定tools.microsoft:winsdk_version=10.0.17763.0失败的原因是:10.0.17763.0是Windows 10 1809的系统版本号,并非Windows SDK版本号,且你的环境中没有安装对应版本的SDK。正确思路是保留使用已安装的最新SDK,通过定义_WIN32_WINNT和NTDDI_VERSION宏来强制最低兼容的Windows版本。

具体配置方法

方法1:通过Conan Profile全局配置

在你的Conan profile文件中添加编译宏定义,让所有依赖和目标项目统一使用指定的最低版本:

[conf]
# 针对C语言添加宏定义
tools.build:cflags="-D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000005"
# 针对C++语言添加宏定义
tools.build:cxxflags="-D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000005"

对应版本宏说明:

  • 0x0A00 → _WIN32_WINNT_WIN10(基础Windows 10版本)
  • 0x0A000005 → NTDDI_WIN10_RS5(Windows 10 1809)

方法2:在Conan Recipe中针对特定包配置

如果只需要给单个特定包设置最低版本,可以在包的conanfile.py的build()方法中添加编译选项:

from conan import ConanFile
from conan.tools.cmake import CMake

class MyPackageConan(ConanFile):
    # 其他配置(如name, version等)
    def build(self):
        cmake = CMake(self)
        # 注入编译宏到CMake参数
        cmake.definitions["CMAKE_C_FLAGS"] = "-D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000005"
        cmake.definitions["CMAKE_CXX_FLAGS"] = "-D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000005"
        cmake.configure()
        cmake.build()

方法3:结合CMake工具链配置

如果项目依赖CMake构建,也可以通过Conan传递自定义工具链文件:

[conf]
tools.cmake.cmaketoolchain:user_toolchain=./my_toolchain.cmake

在my_toolchain.cmake中添加宏定义:

add_compile_definitions(_WIN32_WINNT=0x0A00)
add_compile_definitions(NTDDI_VERSION=0x0A000005)

验证配置生效

构建时可以查看编译命令行输出,确认是否包含-D_WIN32_WINNT=0x0A00和-DNTDDI_VERSION=0x0A000005参数;也可以在CMake的构建日志中查找宏定义的加载确认信息。

内容的提问来源于stack exchange,提问作者acm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:27:18