现代 CMake 课程学习:从「面向目录」到「面向目标」
现代 CMake 课程学习:从「面向目录」到「面向目标」 现代 CMake 不是新语法,是新思维。 写在前面 这篇文章适合谁? 用过 CMake 但只会 add_executable + target_link_libraries 的人 从 Makefile / Visual Studio 工程迁移过来,想系统学 CMake 的人 看别人 CMakeLists.txt 里一堆 PUBLIC、$<BUILD_INTERFACE:...> 一头雾水的人 什么是 CMake?(30 秒版本) CMake 不是编译器,它是一个构建系统生成器。你写一份 CMakeLists.txt,CMake 帮你生成对应平台的构建文件: Linux → Makefile 或 Ninja Windows → Visual Studio .sln 或 Ninja macOS → Xcode 或 Ninja 类比:CMake 就像一个"翻译官",你用一种语言描述"我要编译什么",它翻译成各平台编译器能理解的指令。 为什么要学"现代" CMake? CMake 从 2000 年诞生至今,经历了巨大变化。2014 年的 CMake 3.0 是分水岭——引入了 target-based(面向目标)设计。此后的版本持续完善这套体系。 如果你还在用 include_directories()、link_libraries() 这套"传统写法",那你用的是 2014 年之前的思路——就像 2025 年还在写 C++98 一样。 ...