CMake中的“目标”是什么?

2fjabf4q  于 2023-01-02  发布在  其他
关注(0)|答案(2)|浏览(230)

我想简单地解释一下什么是CMake中的目标。目前的术语是我不太熟悉的东西,我正在寻求主要用于add_executableadd_library的“目标”一词的简单解释。

polkgigr

polkgigr1#

目标是要执行的操作的名称。执行、生成或创建取决于目标。通常,目标名称表示可执行文件或库文件。
术语“目标”来自make命令。make将目标名称作为参数,并使用指定如何创建特定目标/文件的规则来构建它们。在make中,“目标”只是要生成的文件的路径,例如实际的可执行文件名称。https://www.gnu.org/software/make/manual/make.html#Rule-Introduction
当自目标上次修改以来先决条件文件已被修改或目标不存在时,由CMake生成的构建系统“更新目标”(执行构建可执行文件或库文件所需的命令)(“目标”=构建目标的结果文件)。

nlejzf6q

nlejzf6q2#

目标代表构建系统中的可执行文件(具有主函数/入口点(程序)的二进制文件中的函数和数据)或库(没有主函数/入口点的二进制文件中的函数和数据)。有关详细信息,请参阅关于二进制目标的文档以及the docs for add_executablefor add_library
目标可以是项目的一部分(在这种情况下,它们有源文件,需要作为构建系统的一部分构建),也可以是IMPORTED,在这种情况下,它们已经以二进制形式存在,没有源文件,不需要构建(它们已经在构建系统之外构建,以便为项目生成)。
目标之间可以具有依赖关系。例如,可执行目标依赖于库目标来使用其函数和数据。有关详细信息,请参阅the docs for target_dependencies,它可能会影响将二进制文件链接在一起以及生成顺序:确保在需要重建依赖目标时重建依赖目标。
有一些目标类型不是IMPORTED,也没有什么要构建的(例如,接口库和其他类型,您可以在add_library文档中阅读,但这些是更“高级”的特性)。

相关问题