前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CMake Error: ...Missing variable is: CMAKE_FIND_LIBRARY_

CMake Error: ...Missing variable is: CMAKE_FIND_LIBRARY_

作者头像
10km
发布2019-05-25 22:38:55
1.8K0
发布2019-05-25 22:38:55
举报
文章被收录于专栏:10km的专栏10km的专栏

版权声明:本文为博主原创文章,转载请注明源地址。 https://cloud.tencent.com/developer/article/1433765

今天在使用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语句放在代码最前面,就可以避免这些低级且烦人的报错带来的麻烦。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档