我想简单地解释一下什么是CMake中的目标。目前的术语是我不太熟悉的东西,我正在寻求主要用于add_executable和add_library的“目标”一词的简单解释。
add_executable
add_library
polkgigr1#
目标是要执行的操作的名称。执行、生成或创建取决于目标。通常,目标名称表示可执行文件或库文件。术语“目标”来自make命令。make将目标名称作为参数,并使用指定如何创建特定目标/文件的规则来构建它们。在make中,“目标”只是要生成的文件的路径,例如实际的可执行文件名称。https://www.gnu.org/software/make/manual/make.html#Rule-Introduction当自目标上次修改以来先决条件文件已被修改或目标不存在时,由CMake生成的构建系统“更新目标”(执行构建可执行文件或库文件所需的命令)(“目标”=构建目标的结果文件)。
make
nlejzf6q2#
目标代表构建系统中的可执行文件(具有主函数/入口点(程序)的二进制文件中的函数和数据)或库(没有主函数/入口点的二进制文件中的函数和数据)。有关详细信息,请参阅关于二进制目标的文档以及the docs for add_executable和for add_library。目标可以是项目的一部分(在这种情况下,它们有源文件,需要作为构建系统的一部分构建),也可以是IMPORTED,在这种情况下,它们已经以二进制形式存在,没有源文件,不需要构建(它们已经在构建系统之外构建,以便为项目生成)。目标之间可以具有依赖关系。例如,可执行目标依赖于库目标来使用其函数和数据。有关详细信息,请参阅the docs for target_dependencies,它可能会影响将二进制文件链接在一起以及生成顺序:确保在需要重建依赖目标时重建依赖目标。有一些目标类型不是IMPORTED,也没有什么要构建的(例如,接口库和其他类型,您可以在add_library文档中阅读,但这些是更“高级”的特性)。
IMPORTED
target_dependencies
2条答案
按热度按时间polkgigr1#
目标是要执行的操作的名称。执行、生成或创建取决于目标。通常,目标名称表示可执行文件或库文件。
术语“目标”来自
make
命令。make
将目标名称作为参数,并使用指定如何创建特定目标/文件的规则来构建它们。在make
中,“目标”只是要生成的文件的路径,例如实际的可执行文件名称。https://www.gnu.org/software/make/manual/make.html#Rule-Introduction当自目标上次修改以来先决条件文件已被修改或目标不存在时,由CMake生成的构建系统“更新目标”(执行构建可执行文件或库文件所需的命令)(“目标”=构建目标的结果文件)。
nlejzf6q2#
目标代表构建系统中的可执行文件(具有主函数/入口点(程序)的二进制文件中的函数和数据)或库(没有主函数/入口点的二进制文件中的函数和数据)。有关详细信息,请参阅关于二进制目标的文档以及the docs for
add_executable
和foradd_library
。目标可以是项目的一部分(在这种情况下,它们有源文件,需要作为构建系统的一部分构建),也可以是
IMPORTED
,在这种情况下,它们已经以二进制形式存在,没有源文件,不需要构建(它们已经在构建系统之外构建,以便为项目生成)。目标之间可以具有依赖关系。例如,可执行目标依赖于库目标来使用其函数和数据。有关详细信息,请参阅the docs for
target_dependencies
,它可能会影响将二进制文件链接在一起以及生成顺序:确保在需要重建依赖目标时重建依赖目标。有一些目标类型不是
IMPORTED
,也没有什么要构建的(例如,接口库和其他类型,您可以在add_library
文档中阅读,但这些是更“高级”的特性)。