请详细说明cmake中的add_library()
时间: 2024-03-16 13:45:11 浏览: 106
CMake中的`add_library()`函数用于创建一个库文件。它的基本语法为:
```cmake
add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL]
source1 [source2 ...])
```
其中,`<name>`参数指定要创建的库文件的名称,`[STATIC | SHARED | MODULE]`参数是可选的,用于指定库文件的类型,`[EXCLUDE_FROM_ALL]`参数也是可选的,用于指定该库文件是否被默认构建。`source1 [source2 ...]`参数是指定要编译的源文件列表。
下面是参数的详细说明:
- `<name>`:要创建的库文件的名称。这个名称可以是任意的,但是应该与该库文件的内容相关,以便于其他开发者使用时能够理解它的作用。
- `[STATIC | SHARED | MODULE]`:可选参数,用于指定库文件的类型。默认情况下,`add_library()`函数创建的是静态库(STATIC)。如果想创建动态库(SHARED)或模块库(MODULE)需要指定这个参数。
- `[EXCLUDE_FROM_ALL]`:可选参数,用于指定该库文件是否被默认构建。默认情况下,所有的库文件都会被构建。如果指定了这个参数,那么该库文件就不会被默认构建,需要手动指定才能构建。
- `source1 [source2 ...]`:指定要编译的源文件列表。这个列表可以使用相对或绝对路径来指定源文件。
例如:
```cmake
add_library(mylib STATIC foo.cpp bar.cpp)
```
这个命令将创建一个名为`mylib`的静态库文件,其中包含了`foo.cpp`和`bar.cpp`这两个源文件。如果要使用动态库或模块库,只需要将`STATIC`替换为`SHARED`或`MODULE`即可。
在其他CMakeLists.txt文件中,可以使用`target_link_libraries()`函数来链接该库文件,例如:
```cmake
add_executable(myexe main.cpp)
target_link_libraries(myexe mylib)
```
这样,`myexe`就可以使用`mylib`中定义的函数和变量了。
阅读全文