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 目标属性的文档。有关更改最终文件名中 <name> 部分的信息,请参阅 OUTPUT_NAME 目标属性的文档。
有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7) 手册。
另请参阅 HEADER_FILE_ONLY,了解如果某些源文件需要预处理,并且您希望在 IDE 中访问原始源文件时该如何处理。
导入的可执行文件¶
- add_executable(<name> IMPORTED [GLOBAL])¶
添加一个 导入的可执行文件目标,用于引用项目外部的可执行文件。目标名称可以像项目内部构建的任何目标一样被引用,只是默认情况下它仅在创建它的目录及其子目录中可见。
选项包括
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 目标不能被安装或导出。