Cmake-add_executable

本文介绍如何使用CMake的add_executable命令为项目引入可执行文件,包括默认行为及通过不同选项定制构建过程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CMD#5:add_executable: 使用给定的源文件,为工程引入一个可执行文件。

add_executable(< name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
source1 source2 … sourceN)
  引入一个名为< name>的可执行目标,该目标会由调用该命令时在源文件列表中指定的源文件来构建。< name>对应于逻辑目标名字,并且在工程范围内必须是全局唯一的。被构建的可执行目标的实际文件名将根据具体的本地平台创建出来(比如< name>.exe或者仅仅是< name>)。

  默认情况下,可执行文件将会在构建树的路径下被创建,对应于该命令被调用的源文件树的路径。如果要改变这个位置,查看RUNTIME_OUTPUT_DIRECTORY目标属性的相关文档。如果要改变最终文件名的< name >部分,查看OUTPUT_NAME目标属性的相关文档。

  如果指定了MACOSX_BUNDLE选项,对应的属性会附加在创建的目标上。查看MACOSX_BUNDLE目标属性的文档可以找到更多的细节。

  如果指定了EXCLUDE_FROM_ALL选项,对应的属性将会设置在被创建的目标上。查看EXCLUDE_FROM_ALL目标属性的文档可以找到更多的细节。

  使用下述格式,add_executable命令也可以用来创建导入的(IMPORTED)可执行目标:

  add_executable(< name> IMPORTED)

  一个导入的可执行目标引用了一个位于工程之外的可执行文件。该格式不会生成构建这个目标的规则。该目标名字的作用域在它被创建的路径以及底层路径有效。它可以像在该工程内的其他任意目标一样被引用。导入可执行文件为类似于add_custom_command之类的命令引用它提供了便利。

  关于导入的可执行文件的细节可以通过设置以IMPORTED_开头的属性来指定。这类属性中最重要的是IMPORTED_LOCATION(以及它对应于具体配置的版本IMPORTED_LOCATION_< CONFIG>);该属性指定了执行文件主文件在磁盘上的位置。查看IMPORTED_*属性的文档来获得更多信息。

CMake 是一个跨平台的自动化构建系统,它使用 CMakeLists.txt 文件来控制软件的编译过程。CMake 提供了一系列命令来添加可执行文件和库文件到构建过程中。 `add_executable` 命令用于从指定的源文件列表创建一个可执行文件。基本语法如下: ```cmake add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source1] [source2 ...]) ``` 其中 `<name>` 是目标可执行文件的名称,后面的参数是可选的,`WIN32` 指定生成的可执行文件适用于 Windows 系统,`MACOSX_BUNDLE` 用于生成 MacOS 系统下的应用程序包,`EXCLUDE_FROM_ALL` 表示该目标不会从 CMakeLists.txt 的顶级级别自动构建。源文件列表列出了创建该可执行文件所需的所有源代码文件。 `add_library` 命令用于创建一个库文件。基本语法如下: ```cmake add_library(<name> [STATIC | SHARED | MODULE | OBJECT | INTERFACE] [EXCLUDE_FROM_ALL] [source1] [source2 ...]) ``` 其中 `<name>` 是目标库文件的名称,`STATIC`、`SHARED`、`MODULE`、`OBJECT`、`INTERFACE` 指定了库文件的类型。`STATIC` 表示生成静态库,`SHARED` 表示生成动态链接库,`MODULE` 用于插件等模块化的动态库,`OBJECT` 用于创建对象文件集合,`INTERFACE` 用于定义接口目标,这些接口目标可以被其他目标使用。与 `add_executable` 类似,`EXCLUDE_FROM_ALL` 用于表示该目标不应从顶级构建。 使用 `add_executable` 和 `add_library` 可以在 CMake 中定义项目结构,它们是项目构建过程中的基础组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值