一、什么是cmake和makefile简单来说CMake 是一个用来生成 Makefile 的工具。它们是构建 C/C 项目过程中不同层级的工具通常配合使用而不是相互替代。 Makefile编译的“施工队”角色 它是具体的“执行者”。你用一个叫 make 的工具根据 Makefile 文件里的详细指令一步步调用编译器如 gcc 来编译和链接你的代码。特点 你需要手动编写所有编译规则。对于小型项目这很直接但对于大型项目规则会变得非常复杂和冗长。跨平台性 较弱。同一个项目如果要在 Windows 和 Linux 上编译你可能需要写两份完全不同的 Makefile 。️ CMake生成 Makefile 的“总设计师”角色 它是“生成器”不是直接编译工具。你写一个更高层次的配置文件 CMakeLists.txt 描述项目结构、源文件、依赖库等信息。特点 CMake 会根据你写的 CMakeLists.txt 自动生成对应平台的 Makefile 在 Linux 上或 Visual Studio 项目文件在 Windows 上。跨平台性 非常强。你只需要维护一份 CMakeLists.txt 就能在不同平台上生成对应的构建文件真正做到“一处编写多处运行”。 它们是如何协作的整个工作流程通常是这样的编写 CMakeLists.txt 你定义项目名、版本、源文件、需要的库等。运行 cmake 命令 CMake 读取 CMakeLists.txt 并生成当前平台适用的 Makefile 或其他构建文件。运行 make 命令 make 工具读取上一步生成的 Makefile 执行具体的编译和链接操作最终生成可执行文件。 我应该学哪个Makefile 更底层能让你对编译过程有更精细的控制。在一些小型项目或特定的嵌入式开发中直接写 Makefile 会更直接。CMake 对于中大型项目或者需要跨平台支持的项目强烈推荐使用 CMake。它能极大地简化构建流程的维护工作是现代 C/C 项目的主流选择。
cmake和makefile
一、什么是cmake和makefile简单来说CMake 是一个用来生成 Makefile 的工具。它们是构建 C/C 项目过程中不同层级的工具通常配合使用而不是相互替代。 Makefile编译的“施工队”角色 它是具体的“执行者”。你用一个叫 make 的工具根据 Makefile 文件里的详细指令一步步调用编译器如 gcc 来编译和链接你的代码。特点 你需要手动编写所有编译规则。对于小型项目这很直接但对于大型项目规则会变得非常复杂和冗长。跨平台性 较弱。同一个项目如果要在 Windows 和 Linux 上编译你可能需要写两份完全不同的 Makefile 。️ CMake生成 Makefile 的“总设计师”角色 它是“生成器”不是直接编译工具。你写一个更高层次的配置文件 CMakeLists.txt 描述项目结构、源文件、依赖库等信息。特点 CMake 会根据你写的 CMakeLists.txt 自动生成对应平台的 Makefile 在 Linux 上或 Visual Studio 项目文件在 Windows 上。跨平台性 非常强。你只需要维护一份 CMakeLists.txt 就能在不同平台上生成对应的构建文件真正做到“一处编写多处运行”。 它们是如何协作的整个工作流程通常是这样的编写 CMakeLists.txt 你定义项目名、版本、源文件、需要的库等。运行 cmake 命令 CMake 读取 CMakeLists.txt 并生成当前平台适用的 Makefile 或其他构建文件。运行 make 命令 make 工具读取上一步生成的 Makefile 执行具体的编译和链接操作最终生成可执行文件。 我应该学哪个Makefile 更底层能让你对编译过程有更精细的控制。在一些小型项目或特定的嵌入式开发中直接写 Makefile 会更直接。CMake 对于中大型项目或者需要跨平台支持的项目强烈推荐使用 CMake。它能极大地简化构建流程的维护工作是现代 C/C 项目的主流选择。