cmake 编译和链接静态库和动态库
时间: 2023-10-25 10:17:30 浏览: 307
[CMake教程] 生成链接库
CMake是一个跨平台的编译工具,可以用于编译和链接静态库和动态库。下面是使用CMake编译和链接静态库和动态库的步骤:
## 编译静态库
1. 创建一个CMake项目,包含要编译的源代码文件和头文件。
2. 创建一个CMakeLists.txt文件,并添加以下代码:
```
# 设置项目名称和版本号
project(mylib VERSION 1.0)
# 添加要编译的源代码文件
add_library(mylib STATIC src/mylib.cpp)
# 将头文件目录添加到include路径中
target_include_directories(mylib PUBLIC ${PROJECT_SOURCE_DIR}/include)
# 设置安装目录
install(TARGETS mylib DESTINATION lib)
install(FILES include/mylib.h DESTINATION include)
```
3. 在项目目录下创建一个build目录,进入该目录并运行以下命令:
```
cmake ..
make
```
4. 编译完成后,静态库文件将生成在build/lib目录下。
## 编译动态库
1. 创建一个CMake项目,包含要编译的源代码文件和头文件。
2. 创建一个CMakeLists.txt文件,并添加以下代码:
```
# 设置项目名称和版本号
project(mylib VERSION 1.0)
# 添加要编译的源代码文件
add_library(mylib SHARED src/mylib.cpp)
# 将头文件目录添加到include路径中
target_include_directories(mylib PUBLIC ${PROJECT_SOURCE_DIR}/include)
# 设置安装目录
install(TARGETS mylib DESTINATION lib)
install(FILES include/mylib.h DESTINATION include)
```
3. 在项目目录下创建一个build目录,进入该目录并运行以下命令:
```
cmake ..
make
```
4. 编译完成后,动态库文件将生成在build/lib目录下。
## 链接静态库
1. 创建一个CMake项目,包含要编译的源代码文件和头文件。
2. 创建一个CMakeLists.txt文件,并添加以下代码:
```
# 设置项目名称和版本号
project(myapp VERSION 1.0)
# 添加要编译的源代码文件
add_executable(myapp src/main.cpp)
# 将头文件目录添加到include路径中
target_include_directories(myapp PUBLIC ${PROJECT_SOURCE_DIR}/include)
# 添加静态库
add_library(mylib STATIC IMPORTED)
set_target_properties(mylib PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libmylib.a)
target_link_libraries(myapp mylib)
```
3. 在项目目录下创建一个build目录,进入该目录并运行以下命令:
```
cmake ..
make
```
4. 链接完成后,可执行文件将生成在build目录下。
## 链接动态库
1. 创建一个CMake项目,包含要编译的源代码文件和头文件。
2. 创建一个CMakeLists.txt文件,并添加以下代码:
```
# 设置项目名称和版本号
project(myapp VERSION 1.0)
# 添加要编译的源代码文件
add_executable(myapp src/main.cpp)
# 将头文件目录添加到include路径中
target_include_directories(myapp PUBLIC ${PROJECT_SOURCE_DIR}/include)
# 添加动态库
add_library(mylib SHARED IMPORTED)
set_target_properties(mylib PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libmylib.so)
target_link_libraries(myapp mylib)
```
3. 在项目目录下创建一个build目录,进入该目录并运行以下命令:
```
cmake ..
make
```
4. 链接完成后,可执行文件将生成在build目录下。
阅读全文