我正在编写一款小型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:...>或安装规则)
我不确定的地方:
- Windows上正确的依赖策略是:
- vcpkg与固定基线(事物模式),还是
- 将依赖项嵌入到特定版本(SDL + tmxlite作为子模块)
- 版本控制/可复制性With vcpkg,固定基线是否足以保证SDL版本一致性?还是人们更喜欢使用vendor来实现发布稳定性?
- 硬盘上的“位置”...来自分属linux,我感到奇怪,不需要考虑安装位置。使用vcpkg + CMake工具链时,当硬盘路径不是一个问题吗?只要工具链配置正确?
- 包装期望对于标准的SDL游戏,标准方法是:
- 动态链接 + 将必要的DLL放在exe旁边
- 还是尝试静态链接尽可能多的模块?
如果你已在windows上发行过这类小型C++/SDL游戏,仅仅一句话也好,希望能给我一个安慰。
评论 (0)