一、为什么要.so文件?
在
CMakeLists.txt
中加入.so
文件是为了将这些 共享库 动态链接到项目中。这样可以在编译时告诉 CMake 你的程序依赖于这些外部的共享库,并在运行时加载它们。
二、.so文件是什么?
.so
文件是一种 共享库文件,在 Linux 和其他类 Unix 系统中常见。.so
是 shared object 的缩写,用于将库文件动态链接到应用程序。共享库的主要目的是节省内存和减少磁盘空间,因为多个程序可以共享同一个库文件。
三、怎么在CMmakeLists.txt文件中加入.so文件?
文件目录如下
在lib目录中有.so文件,在CmkeLists.txt文件中加入如下代码:
# 查找所有 .so 文件
file(GLOB LIBRARY_FILES ./lib/*.so)
target_link_libraries(object_name ${LIBRARY_FILES})
补充CMakeLists.txt
的基本语法:
1. 最低版本要求
cmake_minimum_required(VERSION <版本号>)
2. 项目名称
project(<项目名> [LANGUAGES CXX C])
3. 设置编译选项
set(CMAKE_CXX_STANDARD 11) # 设置 C++ 标准
set(CMAKE_BUILD_TYPE Debug) # 设置构建类型
4. 添加源文件
add_executable(<目标名> <文件1> <文件2>)
5. 包含目录
include_directories(<路径>)
target_include_directories(<目标名> PRIVATE <路径>)
6. 链接库
target_link_libraries(<目标名> <库1> <库2>)
7. 设置输出路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY <路径>)
8. 查找库或包
find_package(<包名> REQUIRED)
示例
cmake_minimum_required(VERSION 3.10)
project(MyProject LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
add_executable(my_app main.cpp)
target_include_directories(my_app PRIVATE include)
target_link_libraries(my_app pthread)