利用cmake语句配置库的realname soname linkername
时间: 2025-01-01 19:41:58 浏览: 8
在CMake中,`REALNAME`, `SONAME`, 和 `LINKER_NAME` 这些选项通常用于管理动态链接库(DLLs 或共享对象)的名称。下面是对它们基本作用的简介:
1. **REALNAME** (也称为 `NAMESPACE` 或 `IMPORTED_NAME`): 这个选项指定库的实际名称,当被其他程序引用时,用户会看到的库名。它通常用于明确区分不同版本或分支的库。
2. **SONAME** (也称为 `TARGET_EXPORT_NAME`): 这是库的符号表导出名字,通常设置为 SONAME 版本号,保证了库的二进制兼容性。当你更新库并发布新版本时,只需改变 SONAME,而不必修改实际文件名,但需要保持向前兼容。
3. **LINKER_NAME** (有时在Windows上称为 `LIBRARY_OUTPUT_NAME`): 这个选项是最终链接到目标位置的库文件名。例如,在Linux的ELF文件系统下,这个值会被用作生成的.so文件的名称。
在CMakeLists.txt文件中,你可以像这样配置:
```cmake
add_library(MyLibrary SHARED
source_files.cpp
)
set_target_properties(MyLibrary PROPERTIES
REAL_NAME "MyLibrary"
VERSION "1.0.0"
SOVERSION "1"
SONAME "MyLibrary.${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}"
LINKER_LANGUAGE CXX
)
```
阅读全文