CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Debug vs Release — 优化、符号与行为

    C++ SELF
    等级 32,课时 0
    解析 C++ 中 Debug 与 Release 构建的真实差别:优化如何影响调试器中的“可观测性”,为什么需要 debug symbols,为什么发布版调试看起来“奇怪”,以及宏 NDEBUG 如何禁用 assert。结尾给出基于 TASKBOX_TRACE 风格的 debug 日志实用模板和常见错误清单,导致“Debug 能运行,但 Release 不行”的典型原因。
    可用
  • Out-of-source builds — build 文件夹应当独立

    C++ SELF
    等级 32,课时 1
    我们讨论在使用 CMake 的项目中采用 out-of-source 构建的实践:为什么编译产物应该与源代码分离、通常会出现在 build/ 中的内容有哪些、 in-source 构建有哪些风险、如何保持项目根目录“干净”、为什么需要多个 build 目录(如 build-debug/, build-release/)以及哪些错误最常导致构建和心情崩溃。
    可用
  • CMake Presets:可复现的预设

    C++ SELF
    等级 32,课时 2
    解析 CMake Presets 作为使项目构建可复现的一种方式:把“官方”构建场景固定在 CMakePresets.json 中,分离 configure/ build/ test 等阶段,使用预设继承和类似 CMAKE_CXX_STANDARD 与 CMAKE_BUILD_TYPE 的变量,并且讨论常见错误(共用 binaryDir、忘记 configure 步骤、绝对路径以及生成器的细节)。
    可用
  • 通过 FetchContent 引入依赖

    C++ SELF
    等级 32,课时 3
    讲解如何在 CMake 中以可重现且“以 target 为导向”的方式使用 FetchContent 来引入外部库:基础模式 FetchContent_Declare() → FetchContent_MakeAvailable(),遵循“先声明——后引入”的规范,演示如何引入 fmt 并通过 target_link_libraries 链接到 fmt::fmt,以及通过 GIT_TAG(最好使用 commit hash)来固定版本,和使用归档的 URL + URL_HASH 的变体。
    可用
  • multi-target 项目结构:app + lib + tests

    C++ SELF
    等级 32,课时 4
    讲解如何在 CMake 中组织 multi-target 项目:把公共逻辑提取到库中( lib/ budget_core),做精简的应用程序( app)和单独用于校验的可执行文件( tests)。在实践中通过 target_link_libraries 连接目标,通过 target_include_directories 以 PUBLIC 模式配置公共头文件,并讨论典型错误,例如 tests 依赖于 app 以及“所有逻辑都在 main() 中”。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym