cmake编译caffe-windows出现Not Found Atlas的问题

本文介绍了一种解决CMake编译Caffe-Windows时出现的Atlas库未找到的问题的方法。通过将BLAS从Atlas更改为Open,可以成功地定位并使用OpenBLAS库,从而实现正确配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmake编译caffe-windows时出现如下错误:

CMake Error at C:/Program Files/CMake/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
Could NOT find Atlas (missing: Atlas_CLAPACK_INCLUDE_DIR
Atlas_CBLAS_LIBRARY Atlas_BLAS_LIBRARY Atlas_LAPACK_LIBRARY)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:378 
(_FPHSA_FAILURE_MESSAGE)
cmake/Modules/FindAtlas.cmake:43 (find_package_handle_standard_args)
cmake/Dependencies.cmake:128 (find_package)
CMakeLists.txt:79 (include)

为了解决这个问题下了不少版本的openblas和lablas,但其实在caffe dependencies中都有,后来在google的caffe小组里有人提到把BLAS的Atlas改为Open即可解决,原文链接。试了一下确实可以,如下图所示:


这是cmake配置出错时出现的配置选项,找到BLAS那一行,点击Atlas,出现三个选项,如下图所示:


选择Open,重新点击Configure,它会去dependencies中找openblas的包,这样就能成功编译caffe-windows了。虽然编译好的工程还是跑不起来。

Found OpenBLAS libraries: C:/Users/Username/.caffe/dependencies/libraries_v140_x64_py27_1.1.0/libraries/lib/libopenblas.dll.a
Found OpenBLAS include: C:/Users/Username/.caffe/dependencies/libraries_v140_x64_py27_1.1.0/libraries/include


### CMake 中 CLANG_TIDY-NOTFOUND 问题解决方案 当在 CMake 配置中遇到 `CLANG_TIDY-NOTFOUND` 错误时,通常是因为 CMake 找不到指定的 clang-tidy 工具路径。以下是解决问题的方法以及如何正确配置静态分析工具。 #### 正确设置 CLANG_TIDY 路径 可以通过手动指定 clang-tidy 的绝对路径来解决此问题。例如,在 CMakeLists.txt 文件中添加如下代码: ```cmake set(CMAKE_CXX_CLANG_TIDY "/path/to/clang-tidy;-checks=*,-performance-unreachable-code") ``` 上述代码设置了 clang-tidy 的具体路径,并通过 `-checks` 参数指定了要启用或禁用的检查项[^1]。如果 clang-tidy 安装在系统的默认路径下(如 `/usr/bin/clang-tidy`),可以直接使用其名称而无需提供完整路径。 #### 自动查找 clang-tidy 为了提高兼容性和可移植性,可以利用 CMake 提供的功能自动查找 clang-tidy 并验证是否存在。以下是一个示例实现: ```cmake find_program(CLANG_TIDY_EXE NAMES clang-tidy PATHS /usr/local/bin /opt/llvm/bin) if(CLANG_TIDY_EXE) message(STATUS "Clang-Tidy found: ${CLANG_TIDY_EXE}") set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=*," "-readability-braces-around-statements," "-cppcoreguidelines-pro-bounds-array-to-pointer-decay") else() message(WARNING "Clang-Tidy not found. Static analysis will be disabled.") endif() ``` 这段代码尝试在多个可能的位置寻找 clang-tidy 可执行文件,并将其赋值给变量 `CMAKE_CXX_CLANG_TIDY`。如果没有找到,则会发出警告并禁用静态分析功能[^5]。 #### 编译数据库的支持 对于某些项目来说,编译过程中生成的 `compile_commands.json` 是运行 clang-tidy 的必要前提条件之一。因此,确保启用了该选项非常重要。可以在 CMake 配置阶段加入以下指令以支持 JSON 输出: ```cmake set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ``` 这样做的目的是让 cmake 自动生成所需的编译信息文件,从而避免因缺少必要的输入数据而导致错误发生[^3]。 #### 增强灵活性:基于不同构建模式调整行为 考虑到实际开发环境中可能存在多种构建变体(比如 Debug 和 Release 版本之间的差异),建议采用更灵活的方式处理命令参数。下面展示了一个例子说明如何根据不同配置加载相应的资源文件: ```cmake add_custom_command( TARGET my_project POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<$<CONFIG:Debug>:${PROJECT_SOURCE_DIR}/debug_config.json>" "$<$<CONFIG:Release>:${PROJECT_SOURCE_DIR}/release_config.json>" ${CMAKE_CURRENT_BINARY_DIR} ) ``` 这里展示了如何依据当前活动的构建类型决定复制哪个版本的配置文件到目标目录下。 --- ### 总结 综上所述,解决 `CLANG_TIDY-NOTFOUND` 的核心在于确认 clang-tidy 是否已正确定位及其相关环境是否满足需求。除了直接硬编码路径之外,还可以借助 find_program 或其他机制动态探测可用程序;与此同时也要注意维护好辅助性的 compile_commands.json 数据源以便顺利完成整个流程。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值