cmakelist编译动态库和静态库的区别
时间: 2023-08-13 08:25:38 浏览: 226
cmakelists 生成静态库,然后用静态库生成动态库,然后生成测试程序
CMakeLists.txt 是 CMake 的构建脚本,用于自动生成 Makefile 或 Visual Studio 项目等编译工程。编译静态库和动态库的区别在于库文件的生成方式和使用方式。
编译静态库时,编译器会将所有相关的代码打包成一个文件,这个文件会被链接到可执行文件中。链接时会将静态库文件的代码复制到可执行文件中,因此可执行文件会变得较大。静态库的代码不能被多个进程共享,因此每个进程都需要有一份完整的静态库代码。
编译动态库时,编译器会将相关的代码打包成一个动态链接库文件,这个文件会被加载到内存中,可执行文件中只包含动态库的引用。多个进程可以共享同一个动态库,因此可以减少内存占用。但是,如果动态库的接口发生变化,需要重新编译和部署动态库文件。
在 CMake 中,编译静态库和动态库的方法类似,主要区别在于使用 add_library 命令时的参数。编译静态库时,使用 add_library 命令,将第一个参数设置为库名称,第二个参数设置为 STATIC。编译动态库时,将第二个参数设置为 SHARED。例如:
```
add_library(mylib STATIC mylib.cpp) # 编译静态库
add_library(mylib SHARED mylib.cpp) # 编译动态库
```
阅读全文