cmake怎么编译动态库
时间: 2023-07-11 14:19:05 浏览: 58
首先,你需要在CMakeLists.txt文件中使用add_library命令来定义一个动态库。
例如,假设你的项目名为mylib,动态库名为mylib.dll或mylib.so,你可以这样编写CMakeLists.txt文件:
```
# 定义一个动态库
add_library(mylib SHARED
mylib.cpp
# 其他源文件
)
# 设置动态库的版本号
set_target_properties(mylib PROPERTIES
VERSION 1.0.0
SOVERSION 1
)
# 设置动态库的输出名称
set_target_properties(mylib PROPERTIES
OUTPUT_NAME "mylib"
)
```
然后,使用CMake来生成Makefile并编译动态库:
```
mkdir build
cd build
cmake ..
make
```
在编译完成后,你将在build目录中找到mylib.dll或mylib.so文件,这就是你生成的动态库。
注意:如果你在Windows系统中编译动态库,你需要将CMake的生成器设置为Visual Studio,并且在编译完成后将mylib.dll文件复制到mylib.lib文件所在的目录。在Linux系统中编译动态库,则不需要这样做。
相关问题
cmake 编译动态库
要使用CMake编译动态库,你需要在CMakeLists.txt文件中进行相应的设置。以下是一个简单的示例:
首先,在你的项目根目录下创建一个CMakeLists.txt文件,并添加以下内容:
```cmake
cmake_minimum_required(VERSION 3.12)
project(MyLibrary)
set(CMAKE_CXX_STANDARD 11)
# 添加动态库的源文件
set(SOURCE_FILES
src/mylib.cpp
)
# 生成动态库
add_library(MyLibrary SHARED ${SOURCE_FILES})
```
在上述示例中,我们假设你的动态库源文件为src/mylib.cpp。你可以根据实际情况修改此路径。
然后,创建一个名为build的目录,并在其中执行以下命令来构建你的项目:
```shell
$ mkdir build
$ cd build
$ cmake ..
$ make
```
执行完上述命令后,CMake会生成一个动态库文件(以.so为扩展名)。你可以将该库文件用于你的项目中。
请注意,上述示例是一个简单的示意,你可能需要根据你的具体需求来进行适当的修改。
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`)中找到生成的动态库和静态库文件。