cmakelists.txt 生成动态库
时间: 2023-10-02 10:05:27 浏览: 43
要在CMakeLists.txt中生成动态库,你需要添加以下内容:
```
add_library(mylibrary SHARED
src/Hello.cpp
)
```
这将创建一个名为mylibrary的动态库,并将src/Hello.cpp作为源文件进行编译。你可以根据需要添加其他源文件。确保在CMakeLists.txt中的适当位置添加这些命令。
#### 引用[.reference_title]
- *1* *2* [cmake--生成--动态库](https://blog.csdn.net/weixin_30291791/article/details/96956095)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
CMakeLists.txt生成.so动态库
在 CMake 中生成动态库(.so)的步骤如下:
1. 在 CMakeLists.txt 文件中,使用 `add_library()` 函数来创建一个库目标。
```cmake
add_library(mylib SHARED mylib.cpp)
```
其中,`mylib` 是库的名称,`SHARED` 表示生成动态库。
2. 如果需要引用其他库,需要使用 `target_link_libraries()` 函数将这些库链接到当前库中。
```cmake
target_link_libraries(mylib lib1 lib2)
```
其中,`lib1` 和 `lib2` 是需要链接的库的名称。
3. 如果库中需要使用头文件,需要使用 `target_include_directories()` 函数将头文件目录添加到头文件搜索路径中。
```cmake
target_include_directories(mylib PUBLIC include)
```
其中,`include` 是头文件所在的目录。
4. 如果需要设置库的输出路径,可以使用 `set_target_properties()` 函数。
```cmake
set_target_properties(mylib PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
```
其中,`LIBRARY_OUTPUT_DIRECTORY` 表示库的输出路径,`${CMAKE_CURRENT_SOURCE_DIR}/lib` 表示当前 CMakeLists.txt 所在的目录下的 `lib` 子目录。
最终的 CMakeLists.txt 文件示例:
```cmake
cmake_minimum_required(VERSION 3.10)
project(mylib)
# 创建库目标
add_library(mylib SHARED mylib.cpp)
# 链接其他库
target_link_libraries(mylib PRIVATE lib1 lib2)
# 添加头文件搜索路径
target_include_directories(mylib PUBLIC include)
# 设置输出路径
set_target_properties(mylib PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
```
在运行 `cmake` 和 `make` 命令后,就可以在上述设置的输出路径中找到生成的动态库了。
CMakeLists.txt配置链接libjpeg动态库
链接 libjpeg 动态库的方法与链接其他动态库类似,需要使用 `target_link_libraries` 命令并指定库的名称。
假设你有一个名为 `my_project` 的 CMake 项目,并且想要链接 libjpeg 动态库,可以按照以下步骤进行配置:
1. 首先,使用 `find_package` 命令查找 libjpeg 库。通常情况下,已经安装了 libjpeg 库,可以使用系统默认路径进行查找。命令如下:
```
find_package(JPEG REQUIRED)
```
在这个命令中,`JPEG` 是库的名称,`REQUIRED` 表示库是必需的,如果找不到库,CMake 会报错。
2. 然后,在 `target_link_libraries` 命令中指定要链接的库的名称。命令如下:
```
target_link_libraries(my_project JPEG::JPEG)
```
在这个命令中,`my_project` 是要链接库的项目名称,`JPEG::JPEG` 是指 libjpeg 库的 CMake 目标名称。这个名称是由 `find_package` 命令生成的。
完整的 CMakeLists.txt 配置如下:
```
cmake_minimum_required(VERSION 3.10)
project(my_project)
find_package(JPEG REQUIRED)
add_executable(my_project main.cpp)
target_link_libraries(my_project JPEG::JPEG)
```
注意,在使用 `target_link_libraries` 命令时,可以使用库的全名或 CMake 目标名称。使用 CMake 目标名称可以确保库的正确链接,并且可以避免因为库名称不一致而导致的编译错误。