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