计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数指针
c++ 基础 基础语法
c++ 多线程
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt 开发环境
qt c++
理解QObject 1
理解QObject 4
qt index
qt qml quick
qt ui
qt 多线程
数据结构 数组
PC问题监控及排查
PC程序性能优化
OS
TOOL
C++ STL
编程漫谈
C++实战-生产者 消费者流水线
C++实战 IO
本站点使用 MrDoc 构建
-
+
EX2
创建静态库并在可执行文件中使用 ## 练习目标 通过本练习,你将学会: - 创建静态库 - 组织项目结构(头文件和源文件分离) - 使用 `target_include_directories()` 管理包含目录 - 使用 `target_link_libraries()` 链接库 ## 任务描述 创建一个简单的温度转换库,支持摄氏度和华氏度之间的转换,然后创建一个使用该库的命令行程序。 ### 功能要求 1. **温度转换库(templib)** - 摄氏度转华氏度:`F = C * 9/5 + 32` - 华氏度转摄氏度:`C = (F - 32) * 5/9` 2. **命令行程序(tempconv)** - 显示菜单让用户选择转换方向 - 读取温度值 - 调用库函数进行转换 - 显示转换结果 ### 技术要求 - 使用 CMake 3.15 或更高版本 - 创建名为 `templib` 的静态库 - 可执行文件名称为 `tempconv` - 使用 C++17 标准 - 头文件放在 `include/` 目录 - 源文件放在 `src/` 目录 ## 项目结构 ``` exercise-02/ ├── CMakeLists.txt ├── include/ │ └── temperature.h # 库的头文件 ├── src/ │ └── temperature.cpp # 库的实现 └── main.cpp # 主程序 ``` ## 验收标准 - [ ] 项目包含有效的 CMakeLists.txt 文件 - [ ] 成功创建静态库 templib - [ ] 可执行文件正确链接库 - [ ] 程序能够正确进行温度转换 - [ ] 使用 `target_include_directories()` 管理头文件路径 - [ ] 使用 `target_link_libraries()` 链接库 ## 提示 1. 创建静态库: ```cmake add_library(templib STATIC src/temperature.cpp) ``` 2. 设置包含目录: ```cmake target_include_directories(templib PUBLIC include/) ``` 3. 链接库: ```cmake target_link_libraries(tempconv PRIVATE templib) ``` 4. 温度转换公式: ```cpp double celsiusToFahrenheit(double celsius) { return celsius * 9.0 / 5.0 + 32.0; } double fahrenheitToCelsius(double fahrenheit) { return (fahrenheit - 32.0) * 5.0 / 9.0; } ``` ## 预计完成时间 45-60 分钟 ## 构建和测试 ```bash # 配置 cmake -S . -B build # 构建 cmake --build build # 运行 ./build/tempconv # Linux/macOS build\Debug\tempconv.exe # Windows ``` ## 示例运行 ``` Temperature Converter ===================== 1. Celsius to Fahrenheit 2. Fahrenheit to Celsius 3. Exit Choose an option: 1 Enter temperature in Celsius: 25 25.0°C = 77.0°F Choose an option: 2 Enter temperature in Fahrenheit: 77 77.0°F = 25.0°C Choose an option: 3 Goodbye! ``` ## 扩展挑战(可选) 1. 添加开尔文温度转换 2. 添加输入验证(检查有效的温度范围) 3. 支持批量转换(从文件读取多个温度值) 4. 添加单元测试验证转换的准确性 ## 相关资源 - [基本命令](../../tutorials/03-basic-commands.md) - [simple-library 示例](../../examples/simple-library/) - [linking-libraries 示例](../../examples/linking-libraries/) ## 下一步 完成后,查看 [参考解决方案](solution/) 并阅读 [EXPLANATION.md](solution/EXPLANATION.md) 了解库的最佳实践。
peipeo
2026年5月16日 08:46
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码