gpt4 book ai didi

cmake - Cmake、gnu make 和手动编译的区别

转载 作者:行者123 更新时间:2023-12-03 10:02:21 29 4
gpt4 key购买 nike

我是编程新手,所以这是一个更抽象的问题而不是技术问题。我一直在使用 IDE 来学习,但我听说它们在创建可执行文件时倾向于过度简化编译、组装和链接的行为。

我正在尝试在不依赖 IDE(在本例中为 librocket)的情况下下载和编译一个库。我首先必须使用 Cmake 来创建二进制文件。配置和生成后,我在输出目录中没有看到任何目标文件或 .cpp 文件。然后我不得不使用 gnu make 命令,然后在输出目录中创建目标文件和 .cpp 文件。

从下载源代码到实际创建目标文件,Cmake 和 gnu make 做了哪些步骤?编译器和链接器实际上在什么时候被调用?

我已经成功编译了我编写的测试库,然后编译了另一个使用 g++ 链接到它的程序,但我有点迷茫,因为我必须使用 Cmake 和 gnu make 而不是直接调用编译器。

最佳答案

Cmake 是一个“项目生成器”。它实际上并不构建任何目标文件等;它所做的是为其他工具(例如 GNU make)生成控制文件,这些工具将构建目标文件等。

使用 cmake 而不是直接编写 makefile 的好处在于,使用相同的 cmake 输入文件,cmake 可以为各种不同的构建控制工具生成项目文件:除了 makefile 之外,它还可以生成 Xcode (Mac OS X) 项目文件、Microsoft Visual Studio 项目文件和其他工具(如 Ninja)的控制文件。如果您正在编写需要在许多不同平台上构建的软件,那么 cmake 通常是一个不错的选择。

对于您的情况,它是这样的:cmake 生成一组 makefile(仅)。当您拥有干净的工作区时,您通常只执行一次此操作。然后运行 ​​make ,当各种文件更改时,它会根据需要使用这些 makefile 调用编译器。如果任何 cmake 输入文件发生更改,makefile 还具有重新运行 cmake 本身的规则。

关于cmake - Cmake、gnu make 和手动编译的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221869/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com