add_library和add_executable的区别
时间: 2024-01-08 10:04:10 浏览: 68
add_library和add_executable是CMake中用于定义目标的两个命令。
add_library用于创建一个静态库或共享库。它将源文件编译成目标文件,并将其打包到库文件中,供其他目标使用。静态库是在编译时与目标代码链接的,共享库是在运行时动态加载的。
add_executable用于创建一个可执行文件。它将源文件编译成目标文件,并将其链接为可执行文件。可执行文件是可以直接运行的程序。
因此,区别在于add_library用于创建库文件,而add_executable用于创建可执行文件。
相关问题
CMake中add_executable 和 add_library区别
在 CMake 中,`add_executable` 和 `add_library` 都是用来定义一个目标文件的方法,但它们的作用不同:
- `add_executable` 用于创建一个可执行文件,即生成一个 .out 文件,这个文件可以直接运行。
- `add_library` 用于创建一个库文件,即生成一个 .a 或 .so 文件,这个文件可以被其他程序链接使用。
另外,`add_library` 还可以定义 STATIC 和 SHARED 两种类型的库文件。STATIC 类型的库文件是静态链接库,链接时将库文件的代码完全复制一份到可执行文件中;SHARED 类型的库文件是动态链接库,链接时只将一个指向库文件的指针放入可执行文件中,运行时需要加载动态链接库并将其代码复制到内存中。
需要注意的是,在使用 `add_library` 定义一个库文件时,还需要通过 `target_link_libraries` 命令将该库文件连接到其他可执行文件或库文件中。
cmake add_executable add_library
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 中定义项目结构,它们是项目构建过程中的基础组件。
阅读全文