我正在编写一款小型C++(SDL3 + tmxlite + nlohmann_json)游戏,并将从linux环境迁移到尝试Windows发行。

堆栈:

  • C++20
  • SDL3(3.3.7),SDL3_image,SDL3_ttf
  • tmxlite(1.3.1)
  • CMake

在linux上,所有内容都已构建和验证(修饰符,静态分析等)。现在我试着按照Windows的“正确”方式做事情(并不是仅仅“在我的机器上运行”)。

我的当前理解:

  • 使用CMake作为事实依据
  • 依赖项通过find_package(...)发现
  • 最终发行版应为一个自包含文件夹(exe + 所需的DLL + 资源)
  • CMake应处理阶段性时间依赖项($<TARGET_RUNTIME_DLLS:...>或安装规则)

我不确定的地方:

  1. Windows上正确的依赖策略是:
  2. vcpkg与固定基线(事物模式),还是
  3. 将依赖项嵌入到特定版本(SDL + tmxlite作为子模块)
  4. 版本控制/可复制性With vcpkg,固定基线是否足以保证SDL版本一致性?还是人们更喜欢使用vendor来实现发布稳定性?
  5. 硬盘上的“位置”...来自分属linux,我感到奇怪,不需要考虑安装位置。使用vcpkg + CMake工具链时,当硬盘路径不是一个问题吗?只要工具链配置正确?
  6. 包装期望对于标准的SDL游戏,标准方法是:
  7. 动态链接 + 将必要的DLL放在exe旁边
  8. 还是尝试静态链接尽可能多的模块?

如果你已在windows上发行过这类小型C++/SDL游戏,仅仅一句话也好,希望能给我一个安慰。