cmake编译代码生成静态库
时间: 2023-07-17 14:06:09 浏览: 135
您可以使用CMake工具来编译代码并生成静态库。以下是一个简单的示例CMakeLists.txt文件,用于生成一个名为mylib的静态库:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyLib)
# 添加源文件
set(SOURCES
src/foo.cpp
src/bar.cpp
)
# 生成静态库
add_library(mylib STATIC ${SOURCES})
# 指定包含目录
target_include_directories(mylib PUBLIC include)
```
在上述示例中,将源文件foo.cpp和bar.cpp添加到SOURCES变量中。然后使用add_library命令生成名为mylib的静态库,并将SOURCES变量传递给它。最后,使用target_include_directories命令指定库的包含目录。
您可以将此CMakeLists.txt文件与您的代码文件一起放在同一个目录中,并使用以下命令来编译生成静态库:
```shell
mkdir build
cd build
cmake ..
make
```
编译完成后,将在build目录中生成静态库文件libmylib.a。您可以将其链接到其他项目中使用。
请注意,这只是一个简单的示例,您可能需要根据您的项目的具体要求进行适当的调整。
相关问题
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目录下。
cmake 编译动态库和静态库
要使用 CMake 编译动态库和静态库,你可以按照以下步骤进行操作:
1. 创建一个 CMakeLists.txt 文件,该文件描述了构建过程和项目配置。
2. 在 CMakeLists.txt 文件中,使用 `add_library` 命令来定义要构建的库。使用 `SHARED` 参数来指定动态库,使用 `STATIC` 参数来指定静态库。例如:
```cmake
# 构建动态库
add_library(mylib SHARED src/mylib.cpp)
# 构建静态库
add_library(mylib_static STATIC src/mylib.cpp)
```
3. 如果你有多个源文件,可以将它们一起添加到库中:
```cmake
# 构建动态库
add_library(mylib SHARED src/mylib.cpp src/other.cpp)
# 构建静态库
add_library(mylib_static STATIC src/mylib.cpp src/other.cpp)
```
4. 如果你想为库定义公共头文件目录,可以使用 `target_include_directories` 命令。例如:
```cmake
target_include_directories(mylib PUBLIC include)
```
5. 如果你希望链接其他库到你的库中,可以使用 `target_link_libraries` 命令。例如:
```cmake
target_link_libraries(mylib PUBLIC otherlib)
```
6. 最后,在 CMakeLists.txt 文件中添加一个 `install` 命令,以便在构建过程完成后安装库文件到指定的目录。例如:
```cmake
install(TARGETS mylib DESTINATION lib)
install(FILES include/mylib.h DESTINATION include)
```
7. 运行 CMake 命令来生成构建系统所需的文件:
```shell
cmake .
```
8. 使用生成的构建系统来编译和构建库:
```shell
make
```
在构建过程完成后,你将在指定的目录(例如 `lib`)中找到生成的动态库和静态库文件。