CMakelist 怎么编译静态库
时间: 2023-02-18 21:44:54 浏览: 134
首先,在 CMakeLists.txt 文件中添加 add_library 命令并设置为 STATIC 类型,例如:
```
add_library(mylib STATIC mylib.cpp)
```
然后,在编译项目时使用 CMake 的编译选项 -DBUILD_SHARED_LIBS=OFF,例如:
```
cmake -DBUILD_SHARED_LIBS=OFF ..
```
这样就可以成功编译静态库了。
相关问题
cmake 命令行编译静态库
要使用CMake命令行编译静态库,首先需要安装好CMake。然后,在项目的根目录下创建一个CMakeLists.txt文件,用于指定头文件、源文件和库的名字等信息。接下来,使用命令行进入项目的build目录,并运行cmake命令来生成Makefile文件。最后,在build目录下运行make命令来编译生成静态库。
具体的步骤如下:
1. 安装CMake。
2. 在项目的根目录下创建一个CMakeLists.txt文件,并在文件中指定头文件、源文件和库的名字等信息。
3. 使用命令行进入项目的build目录,可以使用如下命令创建一个新的build目录并进入其中:
```
mkdir build
cd build
```
4. 在build目录下运行cmake命令,指定上一步创建的CMakeLists.txt文件的路径:
```
cmake ..
```
这将生成Makefile文件。
5. 最后,在build目录下运行make命令来编译生成静态库:
```
make
```
这将根据Makefile文件编译项目,并生成静态库。
请注意,以上步骤仅适用于在Linux环境下使用CMake编译静态库。对于其他平台,可能需要进行相应的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [使用CMake编译跨平台静态库](https://blog.csdn.net/u012419410/article/details/39718425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [CMake 常用总结二:CMake 生成静态库与动态库](https://blog.csdn.net/liuqingsongmsdn2014/article/details/129032343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
cmakelist编译动态库和静态库的区别
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) # 编译动态库
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)