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

如何关联CMake源码目录到Visual Studio项目 解决新增文件存储路径问题

解决VS2019 + CMake生成C#项目时新项默认存储路径问题

VS添加新项的默认存储路径由.csproj文件的内置属性控制,CMake默认生成的配置会把该路径指向构建目录,可通过修改CMake配置实现新项直接存入指定源码目录,无需手动拷贝:

方案1:CMake 3.20及以上版本(官方原生支持)

  • 在项目根CMakeLists.txt中先定义你的源码根目录路径,示例:
    # 替换为实际的源码目录路径
    set(PROJECT_SRC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src)
    
  • 在定义C#目标(add_executable/add_library)之前添加以下配置:
    # 设置新项默认存储路径为源码目录
    set(CMAKE_DOTNET_TARGET_DIR "${PROJECT_SRC_ROOT}")
    # 保留构建产物输出到原构建目录,避免源码目录污染
    set(CMAKE_CSharp_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
    

方案2:CMake 3.20以下版本兼容配置

如果使用的CMake版本较低,可通过给C#目标设置VS全局属性实现:

  • 在定义C#目标之后添加以下配置,将YOUR_CSHARP_TARGET_NAME替换为实际的目标名:
    set_target_properties(YOUR_CSHARP_TARGET_NAME PROPERTIES
      VS_GLOBAL_DefaultItemPath "${PROJECT_SRC_ROOT}"
      VS_GLOBAL_BaseIntermediateOutputPath "${CMAKE_CURRENT_BINARY_DIR}/obj/"
      VS_GLOBAL_BaseOutputPath "${CMAKE_CURRENT_BINARY_DIR}/bin/"
    )
    

注意事项

  • 不要手动修改生成的.csproj文件,CMake每次重新生成构建配置时会覆盖所有手动修改的内容,所有调整都要在CMakeLists.txt中完成
  • 新项添加完成后,仍然需要把新增的文件路径添加到CMakeLists.txt的目标源文件列表中,下次重新生成CMake缓存时会自动关联到项目
  • WPF窗口、用户控件这类包含xaml和后置代码的多文件组件,CMake会自动识别文件关联关系,无需额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:04