cmake 通过封装为子项目的形式引入第三方已经生成且打包好的动态库拥有数量不确定的库文件要求跨平台动态库的存储使用标准的目录结构 lib下存储lib或a等 include bin下面存储dll或so等给出完整案例
以下是一个使用 CMake 跨平台引入第三方动态库的示例:
假设我们有一个项目 my_project,目录结构如下:
my_project/
CMakeLists.txt
main.cpp
lib/
lib1/
include/
lib1.h
lib/
lib1.dll (Windows) 或 lib1.so (Linux)
lib2/
include/
lib2.h
lib/
lib2.dll (Windows) 或 lib2.so (Linux)
首先,在 my_project 目录下创建 CMakeLists.txt 文件,内容如下:
cmake_minimum_required(VERSION 3.10)
project(my_project)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 添加可执行文件
add_executable(my_project main.cpp)
# 添加头文件搜索路径
include_directories(lib/lib1/include)
include_directories(lib/lib2/include)
# 添加动态库搜索路径
link_directories(lib/lib1/lib)
link_directories(lib/lib2/lib)
# 添加链接库
target_link_libraries(my_project lib1)
target_link_libraries(my_project lib2)
然后,在 my_project 目录下创建 main.cpp 文件,内容如下:
#include "lib1.h"
#include "lib2.h"
int main() {
// 使用 lib1
lib1_function();
// 使用 lib2
lib2_function();
return 0;
}
接下来,进入 my_project 目录,执行以下命令来构建项目:
mkdir build
cd build
cmake ..
make
构建成功后,会在 build 目录下生成可执行文件 my_project。运行该可执行文件即可使用第三方动态库。
请注意,以上示例假设第三方动态库已经按照标准的目录结构存放在 lib 文件夹中。如果实际情况与示例不符,你需要根据实际情况修改 CMakeLists.txt 中的路径
原文地址: https://www.cveoy.top/t/topic/iRCI 著作权归作者所有。请勿转载和采集!