当前位置: 首页 > wzjs >正文

网站右侧客服代码seo免费视频教程

网站右侧客服代码,seo免费视频教程,电商网平台,免费的网站托管很好!我们进入 第八课:构建并导出可复用的 CMake 库(支持 find_package() 查找)。 🎯 本课目标 你将掌握: 如何构建一个库并通过 install() 导出其配置; 如何让别人在项目中使用 find_package…

很好!我们进入 第八课:构建并导出可复用的 CMake 库(支持 find_package() 查找)


🎯 本课目标

你将掌握:

  1. 如何构建一个库并通过 install() 导出其配置;

  2. 如何让别人在项目中使用 find_package(MyMathLib) 来找到你的库;

  3. install(EXPORT ...)CMake Package Config 的标准结构;

  4. 自己项目变成像 Qt / Boost / OpenCV 那样被“可复用”的第三方库。


一、场景:我们要让 math_lib 成为“真正的可复用库”

即别人可以这样用你:

find_package(MyMathLib REQUIRED)
target_link_libraries(their_app PRIVATE MyMathLib::math_lib)

二、导出 CMake 包需要做的几步

步骤操作
1️⃣ 安装目标install(TARGETS ...) 安装库
2️⃣ 安装头文件install(FILES ...) 安装接口头
3️⃣ 导出目标信息install(EXPORT ...)
4️⃣ 安装 CMake 配置文件MyMathLibConfig.cmake
5️⃣ 生成版本描述文件使用 write_basic_package_version_file()

三、完整示例:导出 math_lib 包

假设项目结构如下:

my_math_lib/
├── CMakeLists.txt
├── math/
│   ├── CMakeLists.txt
│   ├── add.h
│   └── add.cpp
└── cmake/└── MyMathLibConfig.cmake.in

📄 顶层 CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(MyMathLib VERSION 1.0 LANGUAGES CXX)# 创建导出组名(可选)
include(GNUInstallDirs)add_subdirectory(math)# 生成版本文件
include(CMakePackageConfigHelpers)
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/MyMathLibConfigVersion.cmake"VERSION ${PROJECT_VERSION}COMPATIBILITY SameMajorVersion
)# 安装配置文件
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/MyMathLibConfig.cmake.in""${CMAKE_CURRENT_BINARY_DIR}/MyMathLibConfig.cmake"INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MyMathLib
)# 安装配置 + 导出目标
install(FILES"${CMAKE_CURRENT_BINARY_DIR}/MyMathLibConfig.cmake""${CMAKE_CURRENT_BINARY_DIR}/MyMathLibConfigVersion.cmake"DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MyMathLib
)

📄 math/CMakeLists.txt

add_library(math_lib add.cpp)
target_include_directories(math_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})# 设置导出别名(名字空间)
add_library(MyMathLib::math_lib ALIAS math_lib)# 安装目标
install(TARGETS math_libEXPORT MyMathLibTargetsARCHIVE DESTINATION libLIBRARY DESTINATION libRUNTIME DESTINATION binINCLUDES DESTINATION include
)# 安装头文件
install(FILES add.h DESTINATION include)# 导出目标信息(用于 find_package)
install(EXPORT MyMathLibTargetsNAMESPACE MyMathLib::DESTINATION lib/cmake/MyMathLib
)

📄 cmake/MyMathLibConfig.cmake.in

@PACKAGE_INIT@include("${CMAKE_CURRENT_LIST_DIR}/MyMathLibTargets.cmake")

四、构建 + 安装 + 使用流程

✅ 构建并安装:

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=D:/MyMathLib/install
cmake --build . --config Release
cmake --install . --config Release

📁 安装目录结构(标准化)

D:/MyMathLib/install/
├── include/
│   └── add.h
├── lib/
│   └── math_lib.lib
├── lib/cmake/MyMathLib/
│   ├── MyMathLibTargets.cmake
│   ├── MyMathLibConfig.cmake
│   └── MyMathLibConfigVersion.cmake

五、别人的项目如何使用你这个库?

示例 CMakeLists.txt:

cmake_minimum_required(VERSION 3.14)
project(UserProject LANGUAGES CXX)set(CMAKE_PREFIX_PATH "D:/MyMathLib/install")  # 设置查找路径find_package(MyMathLib REQUIRED)add_executable(app main.cpp)
target_link_libraries(app PRIVATE MyMathLib::math_lib)

✅ 小结

组件用途
install(EXPORT ...)导出目标给别人用
MyMathLibConfig.cmake.in配置包的入口文件
write_basic_package_version_file()提供版本信息

一旦配置好,你的库就能被任何支持 find_package() 的项目复用了。


⏭️ 下一课预告:跨平台支持与条件判断(if、platform-specific)

你将学会:

  • 如何为 Windows / Linux / macOS 写不同逻辑

  • 如何处理编译器差异(如 MSVC / GCC)

  • option() 设置用户开关(如是否启用日志、测试)


是否希望我把这个完整导出库模板也整理进 Canvas?或者你希望我打包为 zip 并生成目录结构?

http://www.dtcms.com/wzjs/481697.html

相关文章:

  • 北京网站制作公司排名网站运营课程
  • 沈阳市于洪区建设局网站域名查询访问
  • 上海的加盟网站建设google下载安卓版下载
  • 为什么大公司不用c 做网站百度手机关键词排名工具
  • 外贸社交网站排名免费入驻的电商平台
  • 怎么做外贸网站seo如何优化一个网站
  • 苏州工业园区两学一做网站百度网络小说排行榜
  • 刚做的网站为什么搜索不到长沙疫情最新消息今天封城了
  • 暴力破解wordpressseo大全
  • 企业网站备案 淘宝客免费学生网页制作成品
  • 国家建设部网站平台海底捞口碑营销案例
  • 网站上的图片格式怎么做宁波seo搜索排名优化
  • 梅州做网站企业邮箱
  • 最好的网站建设免费的aso优化的主要内容为
  • 做美食哪些类型网站如何制作自己的网页
  • 专业网站优化关键词上海网站关键词排名优化报价
  • 做网站上海产品推广营销
  • 温州网站建设推广专家关键词优化方法
  • 一般人公司注册费用湖北seo公司
  • 织梦网站footer美化seo薪酬如何
  • 个人网站可以做app吗百度旗下有哪些app
  • 网站可做2个首页吗长沙关键词优化公司电话
  • 山东省建设安全生产协会网站seo专员是什么职业
  • 武汉专业做网站的公司网址链接生成器
  • 渭南b2c网站制作价格脑白金网络营销
  • 企业网站宣传建设营业推广的概念
  • 做网站为何要续费企业网络推广技巧
  • 3g版网站制作seo快速上排名
  • 陇南市响应式网站建设windows优化大师卸载
  • 运营推广网站建设my77728域名查询