CMake Error: ...Missing variable is: CMAKE_FIND_LIBRARY_

今天在使用cmake的find_library命令时,cmake居然报错:

CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_PREFIXES

意思就是CMAKE_FIND_LIBRARY_PREFIXES这个变量没有定义。代码片段如下:

#在给定义的搜索路径中查找OpenCL库
find_library(OpenCL_LIBRARY
  NAMES OpenCL
  PATHS
    ENV "PROGRAMFILES(X86)"
    ENV AMDAPPSDKROOT
    ENV INTELOCLSDKROOT
    ENV CUDA_PATH
    ENV NVSDKCOMPUTE_ROOT
    ENV ATISTREAMSDKROOT
  PATH_SUFFIXES
    "AMD APP/lib/x86_64"
    lib/x86_64
    lib/x64
    OpenCL/common/lib/x64)
# 定义cmake最低版本要求    
cmake_minimum_required( VERSION 2.6 ) 
# 定义项目名称
project( facecl)
# 如果未指定build类型(DEBUG/RELEASE),则默认为RELEASE
if(NOT CMAKE_BUILD_TYPE )
  set(CMAKE_BUILD_TYPE RELEASE)
endif()

CMAKE_FIND_LIBRARY_PREFIXES是cmake默认定义的变量啊,怎么会没有定义?
没想明白,后来发现是因为find_library代码的位置不对,当时我只是为了测试find_library是否有效,随便将语句放在CMakeLists.txt的最前面了,才会出现这个报错。
find_library放在project( facecl)之后
就能正确找到指定的library。
通过message命令打印变量信息表明:
project( facecl)语句之前,CMAKE_FIND_LIBRARY_PREFIXES这个变量的确没有初始化(CMAKE_STATIC_LIBRARY_SUFFIXCMAKE_IMPORT_LIBRARY_SUFFIX等这些变量也是一样),在project( facecl)之后,它才被初始化成正确的值,所以写cmake代码的时候,一定要注意尽可能将project语句放在代码最前面,就可以避免这些低级且烦人的报错带来的麻烦。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值