CMP Media’s Software Development Magazine Announces Winners for the 15th Annual Jolt Product Excellence & Productivity Awards

第15届Jolt大奖Eclipse、Hibernate获奖
第15届Jolt大奖评选结果公布,Eclipse 3.0力压IntelliJ IDEA 4.5获语言和开发环境类Jolt奖,可能因其开源;Hibernate 2.1力压J2SE (TM) 5.0获类库、框架和组件类大奖。该结果能反映产品水平和接受度,期待未来有国人作品上榜。
第15届Jolt大奖评选结果已经公布,可以在以下地址下载PDF:

http://www.sdmagazine.com/pressroom/jolt_winners_2005.pdf

比较有意思的是:Eclipse 3.0力压IntelliJ IDEA 4.5成为语言和开发环境类的Jolt奖得主,可能出于Eclipse开源的关系;Hibernate 2.1力压J2SE (TM) 5.0获得了类库、框架和组件类的Jolt大奖。

这些结果也许会出乎一些朋友的意料甚至反感,我想说的是,这仅仅是一个相对权威的杂志的一次常规的评选结果,当然也能够在一定程度上反映出获奖者的实际水平和用户/市场接受度,但是能够入围的产品都是相当不错的。

期待在未来能有国人的作品上榜。
<think> 我们被要求解决CMake中出现的Policy CMP0167未设置,FindBoost模块被移除的问题。 根据引用[1]和引用[3]的迁移建议,我们可以采取以下步骤: 1. 升级CMake版本后,观察构建时的策略警告(如Policy CMP0167 is not set)。 2. 通过`cmake --help-policy CMP0167`查看该策略的详细说明。 3. 根据策略说明,启用新行为(`cmake_policy(SET CMP0167 NEW)`)并测试项目功能是否正常。 但是,引用[3]中提到,对于FindCUDA模块被移除的情况,建议使用官方提供的替代包(CUDAToolkit)。类似地,对于FindBoost模块,CMake官方也提供了替代方案。 根据CMake的更新,从3.5版本开始,官方推荐使用`find_package(Boost)`来调用新的Boost查找模块(通过`BoostConfig.cmake`或`boost-config.cmake`),而不是旧的`FindBoost.cmake`。但是,在策略CMP0167中,CMake决定移除旧的FindBoost模块,并强制使用新的查找模块。 因此,解决方案如下: 1. 确保你的CMake版本至少为3.5(推荐使用较新版本,因为旧版本可能不提供新的查找模块)。 2. 在CMakeLists.txt中显式设置策略CMP0167为NEW: ```cmake cmake_policy(SET CMP0167 NEW) ``` 3. 修改你的`find_package(Boost)`调用,使用新的配置模式。新的查找模块不需要额外的设置,但可能需要指定组件和版本,例如: ```cmake find_package(Boost 1.70 REQUIRED COMPONENTS filesystem system) ``` 4. 如果项目中原来有设置`BOOST_ROOT`等环境变量或CMake变量,这些变量在新的查找模块中仍然有效。 注意:新的查找模块要求Boost安装时提供了配置文件(通常由Boost的CMake支持生成)。如果你使用的Boost版本较旧(早于1.70),可能没有提供配置文件,那么你可能需要回退到旧的方法,但这不推荐,因为策略CMP0167已经移除了FindBoost模块。因此,建议升级Boost版本。 如果由于某些原因必须使用旧版Boost,且无法生成配置文件,那么可能需要手动提供查找模块(不推荐),或者暂时将策略设置为OLD(但这样在未来的CMake版本中会失效)。 因此,最佳实践是升级Boost到较新版本(至少1.70),并使用新的配置模式。 总结步骤: - 升级CMake(至少3.5,推荐3.15+) - 在CMakeLists.txt中设置策略CMP0167为NEW - 使用新的`find_package(Boost)`方式 - 升级Boost版本(如果需要) 引用[1]和引用[3]提供了类似的迁移思路,即设置策略和使用新的替代包。 </think>针对 CMake 中 Policy CMP0167 未设置导致 FindBoost 模块被移除的问题,解决方案如下: ### 解决步骤 1. **显式设置策略** 在 `CMakeLists.txt` 开头添加策略设置: ```cmake cmake_minimum_required(VERSION 3.24) # 确保CMake版本支持CMP0167 cmake_policy(SET CMP0167 NEW) # 强制启用新策略行为 ``` 2. **使用新版 Boost 查找方式** 将原有的 `find_package(BOOST)` 替换为 **配置模式** 调用: ```cmake find_package(Boost REQUIRED COMPONENTS filesystem system) # 指定所需组件 ``` 3. **设置 Boost 根目录(可选)** 若 CMake 无法自动定位 Boost,手动指定路径: ```cmake set(BOOST_ROOT "/path/to/boost") # 设置Boost安装目录 ``` 4. **链接库时使用新命名空间** 在目标链接命令中使用 `Boost::` 命名空间: ```cmake target_link_libraries(your_target PRIVATE Boost::filesystem Boost::system ) ``` ### 关键说明 1. **策略变更原因** CMP0167 要求使用 Boost 官方提供的配置文件(`BoostConfig.cmake`)替代 CMake 内置的 `FindBoost.cmake`。新方法提供更标准的依赖管理[^1][^3]。 2. **版本要求** - CMake ≥ 3.24 完全支持此策略 - Boost ≥ 1.70 提供标准配置文件 - 低版本 Boost 需[手动生成配置文件](https://boostorg.github.io/cmake/) 3. **验证方法** 构建时检查输出是否包含: ``` Found Boost: /path/to/boost (found suitable version "x.x.x") ``` ### 完整示例 ```cmake cmake_minimum_required(VERSION 3.24) project(example) cmake_policy(SET CMP0167 NEW) # 关键策略设置 set(BOOST_ROOT "/opt/boost_1_82_0") # 可选路径指定 find_package(Boost 1.82 REQUIRED COMPONENTS filesystem system ) add_executable(my_app main.cpp) target_link_libraries(my_app PRIVATE Boost::filesystem Boost::system ) ``` > **迁移注意**:旧项目需逐步替换所有 `find_package(BOOST)` 调用,避免混合新旧模式[^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值