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

如何为C++ CMake项目添加NuGet package.config文件

在CMake中处理WinUI3的NuGet依赖(package.config)

CMake本身没有原生支持NuGet的packages.config,得靠自定义脚本调用NuGet CLI来完成包还原,下面是两种实用方案:

方案1:直接在CMakeLists里添加自定义命令

  1. 先确认电脑上已安装NuGet CLI,且命令行中能直接执行nuget命令
  2. 在你的CMakeLists.txt中加入以下逻辑:
    # 指定packages.config路径和NuGet包存放目录
    set(NUGET_PACKAGE_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/packages.config")
    set(NUGET_PACKAGES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/packages")
    
    # 添加自定义命令,构建前自动还原NuGet包
    add_custom_command(
      OUTPUT "${NUGET_PACKAGES_DIR}"
      COMMAND nuget restore "${NUGET_PACKAGE_CONFIG}" -PackagesDirectory "${NUGET_PACKAGES_DIR}"
      MAIN_DEPENDENCY "${NUGET_PACKAGE_CONFIG}"
      COMMENT "Restoring NuGet packages from packages.config..."
    )
    
    # 将包还原操作关联到你的WinUI3项目目标
    add_executable(YourWinUI3App [你的源文件列表])
    add_dependencies(YourWinUI3App "${NUGET_PACKAGES_DIR}")
    

方案2:用ExternalProject模块实现灵活控制

如果需要指定NuGet版本、处理复杂依赖流程,可以用CMake的ExternalProject模块:

include(ExternalProject)

ExternalProject_Add(
  NuGetRestore
  PREFIX "${CMAKE_CURRENT_BINARY_DIR}/nuget"
  CONFIGURE_COMMAND ""
  BUILD_COMMAND ""
  INSTALL_COMMAND nuget restore "${CMAKE_CURRENT_SOURCE_DIR}/packages.config" -PackagesDirectory "${CMAKE_CURRENT_SOURCE_DIR}/packages"
  MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/packages.config"
)

# 关联到你的WinUI3项目目标
add_executable(YourWinUI3App [你的源文件列表])
add_dependencies(YourWinUI3App NuGetRestore)

额外注意事项

包还原完成后,需要手动在CMake中配置WinUI3的依赖路径:

  • 找到Microsoft.UI.Xaml等包的头文件目录,添加到项目包含路径:
    find_path(MICROSOFT_UI_XAML_INCLUDE_DIR 
      NAMES "winrt/Microsoft.UI.Xaml.h" 
      PATHS "${NUGET_PACKAGES_DIR}/Microsoft.UI.Xaml.*/build/native/include"
    )
    target_include_directories(YourWinUI3App PRIVATE "${MICROSOFT_UI_XAML_INCLUDE_DIR}")
    
  • 根据包内容,将对应的链接库路径和库文件添加到target_link_libraries中,确保编译时能找到WinUI3相关组件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:45:06