添加_可执行文件¶
使用指定的源文件向项目添加可执行文件。
普通可执行文件¶
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
[source1] [source2 ...])
添加一个名为 <name>
的可执行目标,以从命令调用中列出的源文件构建。 <name>
对应于逻辑目标名称,并且在项目中必须是全局唯一的。构建的可执行文件的实际文件名是根据本机平台的约定构建的(例如 <name>.exe
或只是 <name>
)。
在 3.1 版本加入: add_executable
的源参数可以使用语法为``$<...>`` 的“生成器表达式”。请参阅 cmake-generator-expressions(7)
手册了解可用的表达式。
在 3.11 版本加入: 如果稍后使用 target_sources()
添加源文件,则可以省略它们。
默认情况下,可执行文件将在与调用命令的源树目录相对应的构建树目录中创建。请参阅 RUNTIME_OUTPUT_DIRECTORY
目标属性的文档以更改此位置。请参阅 OUTPUT_NAME
目标属性的文档以更改最终文件名的 <name>
部分。
如果给定 WIN32
属性 WIN32_EXECUTABLE
将在创建的目标上设置。有关详细信息,请参阅该目标属性的文档。
如果给出``MACOSX_BUNDLE``,相应的属性将被设置在创建的目标上。有关详细信息,请参阅 MACOSX_BUNDLE
目标属性的文档。
如果给出 EXCLUDE_FROM_ALL
,则将在创建的目标上设置相应的属性。有关详细信息,请参阅 EXCLUDE_FROM_ALL
目标属性的文档。
有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7)
手册。
另请参阅 HEADER_FILE_ONLY
了解如果对某些源进行了预处理,并且您希望可以从 IDE 中访问原始源,该怎么做。
导入的可执行文件¶
add_executable(<name> IMPORTED [GLOBAL])
IMPORTED 可执行目标 引用位于项目外部的可执行文件。没有生成规则来构建它,并且 IMPORTED
目标属性是 True
。目标名称在其创建目录及以下目录中具有范围,但 GLOBAL
选项扩展了可见性。它可以像项目中构建的任何目标一样被引用。 IMPORTED
可执行文件可用于方便地从 add_custom_command()
等命令中引用。有关导入的可执行文件的详细信息是通过设置名称以“IMPORTED_”开头的属性来指定的。最重要的此类属性是:prop_tgt:IMPORTED_LOCATION`(及其每个配置版本:prop_tgt:`IMPORTED_LOCATION_<CONFIG>),它指定了磁盘上主要可执行文件的位置。有关更多信息,请参阅 IMPORTED_*
属性的文档。
别名可执行文件¶
add_executable(<name> ALIAS <target>)
创建一个 Alias Target,这样 <name>
可用于在后续命令中引用 <target>
。 <name>
不会作为生成目标出现在生成的构建系统中。 <target>
可能不是 ALIAS
。
在 3.11 版本加入: ALIAS
可以针对 GLOBAL
Imported Target
在 3.18 版本加入: ALIAS
可以针对非``GLOBAL`` 导入目标。这种别名的范围是创建它的目录和子目录。 ALIAS_GLOBAL
目标属性可用于检查别名是否为全局别名。
ALIAS
目标可以用作从自定义命令和自定义目标的可执行文件中读取属性的目标。也可以使用常规的 if(TARGET) 子命令来测试它们是否存在。 <name>
不得用于修改 <target>
的属性,也就是说,它不得用作 set_property()
、 set_target_properties()
的操作数, target_link_libraries()
等 ALIAS
目标可能无法安装或导出。