linux cmake 怎么添加静态库
时间: 2023-07-08 16:55:41 浏览: 78
在 CMake 中,可以使用 `add_library()` 命令来添加静态库。下面是添加静态库的步骤:
1. 首先,在 CMakeLists.txt 文件中使用 `add_library()` 命令来定义静态库名称和库文件的源代码文件列表,例如:
```
add_library(my_static_lib STATIC file1.cpp file2.cpp)
```
这将创建一个名为 `my_static_lib` 的静态库,并将 `file1.cpp` 和 `file2.cpp` 编译成静态库文件。
2. 接下来,如果需要将该静态库链接到一个可执行文件或者另一个库中,可以使用 `target_link_libraries()` 命令来链接该静态库,例如:
```
add_executable(my_executable main.cpp)
target_link_libraries(my_executable my_static_lib)
```
这将创建一个名为 `my_executable` 的可执行文件,并将 `my_static_lib` 静态库链接到该可执行文件中。
注意:在 Windows 平台上,CMake 生成的静态库文件扩展名为 `.lib`,而在 Linux 平台上,扩展名为 `.a`。在使用 `target_link_libraries()` 命令时,CMake 会自动根据当前平台选择正确的库文件扩展名。
相关问题
linux cmake 怎么添加现有静态库
在 CMake 中,可以使用 `target_link_libraries()` 命令来链接现有的静态库。
1. 如果该静态库已经安装在系统目录中,可以使用 `find_package()` 命令来查找该库。例如,如果要链接 OpenSSL 库,可以使用以下命令:
```
find_package(OpenSSL REQUIRED)
```
2. 在找到该库之后,可以使用 `target_link_libraries()` 命令来链接该库。例如,如果要将 OpenSSL 库链接到可执行文件中,可以使用以下命令:
```
target_link_libraries(my_executable OpenSSL::SSL OpenSSL::Crypto)
```
其中,`my_executable` 是要链接该库的可执行文件名称,`OpenSSL::SSL` 和 `OpenSSL::Crypto` 是 OpenSSL 库的 CMake 目标名称。
3. 如果该静态库不在系统目录中,可以使用 `link_directories()` 命令来指定该库的搜索路径,并使用 `target_link_libraries()` 命令来链接该库。例如,如果要链接 `/path/to/libssl.a` 和 `/path/to/libcrypto.a` 两个静态库,可以使用以下命令:
```
link_directories(/path/to)
target_link_libraries(my_executable ssl crypto)
```
其中,`my_executable` 是要链接该库的可执行文件名称,`ssl` 和 `crypto` 是静态库文件的名称(去掉扩展名)。
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 ]