首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CMake Error: ...Missing variable is: CMAKE_FIND_LIBRARY_

https://blog.csdn.net/10km/article/details/51282749 今天在使用cmake的find_library命令时,cmake居然报错: CMake...代码片段如下: #在给定义的搜索路径中查找OpenCL库 find_library(OpenCL_LIBRARY NAMES OpenCL PATHS ENV "PROGRAMFILES...没想明白,后来发现是因为find_library代码的位置不对,当时我只是为了测试find_library是否有效,随便将语句放在CMakeLists.txt的最前面了,才会出现这个报错。...将find_library放在project( facecl)之后 就能正确找到指定的library。...、CMAKE_IMPORT_LIBRARY_SUFFIX等这些变量也是一样),在project( facecl)之后,它才被初始化成正确的值,所以写cmake代码的时候,一定要注意尽可能将project

1.9K10

【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )

add_library 命令三个参数说明 : 参数 1 : 设置生成的动态库名称. 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED....native-lib # 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED....命令设置查找函数库 ---- find_library 命令的作用是用于搜索函数库 , 找到的函数库的全路径名称保存到第一个参数变量中 ; 搜索存储 : 搜索指定的预编译库, 并存储该预编译库的路径到变量中...command/find_library.html 六、target_link_libraries 命令设置链接函数库 ---- target_link_libraries 命令的作用是为目标函数库添加需要链接的函数库...native-lib # 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED.

4.3K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android NDK cmake编译方式(六)

    虽然名字中含有"make",但是CMake和Unix上常见的“make”系统是分开的,而且更为高级 Android Studio 如何使用 CMake Android studio 默认下载的cmake...# 指定NDK库的名称 你想让CMake来定位。...可传入多个源文件,其语法为:add_library(libname SHARED | STATIC | MODULE source)。 其中生成的有三种库文件类型,不写的话,默认为 STATIC。...下面我们简单的讲解一下生成的库文件类型: SHARED:表示生成的为动态库,可以在Java代码中使用System.loadLibaray(name)进行动态调用。...STATIC:表示生成的为静态库,集成到代码的时候,会在编译时调用。 MODULE:只有在dyld的系统有效,如果不支持dyld,则会被当作SHARED对待。

    2.4K61

    【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )

    导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 ) 博客中的 CMake 配置的 ndk 代码 , 其中 使用了 find_library...查找系统的动态库 , # 到预设的目录查找 log 库 , 将找到的路径赋值给 log-lib # 这个路径是 NDK 的 ndk-bundle\platforms\android-29\arch-arm...最低版本 cmake_minimum_required(VERSION 3.4.1) # 设置函数库编译 add_library( # 参数 1 : 设置生成的动态库名称 native-lib...# 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED SHARED # 参数 3 : 配置要编译的源文件...后续还需要设置导入路径 , 配合该配置使用 add_library( # 设置引入的静态库名称 add # 设置引入的函数库类型为静态库

    1.2K10

    caffe:cmake编译指定glog,gflag路径

    当使用cmake编译caffe的情况下,在 cmake生成Makefile时会自动找到系统安装的glog,gflag,但是如是我们自己编译了一个glog,gflag,并没有安装在(/usr)系统目录下,...寻找glog,gflag的代码有bug(目前还没修改),导致即使如上一步通过GLOG_ROOT_DIR,GFLAGS_ROOT_DIR指定了glog,gflag路径,cmake也不会找到该路径下的glog...,gflag,如果你的/usr下安装了glog,gflag,它依然会找到系统路径下的版本。...原因分析 这个问题的根本原因在于代码作者对cmake的find_library的查找机制没有全搞明白 简单说就是调用find_library时,会以从一组路径中顺序查找指定的库,这有一个优先序问题...因为所以原始代码中没有加NO_DEFAULT_PATH导致每次只能找到系统路径下的库。 如何保证PATHS指定的路径优先被搜索呢?

    3K50

    【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )

    最低版本 cmake_minimum_required(VERSION 3.4.1) # 设置函数库编译 add_library( # 参数 1 : 设置生成的动态库名称 native-lib...# 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED SHARED # 参数 3 : 配置要编译的源文件...后续还需要设置导入路径 , 配合该配置使用 add_library( # 设置引入的静态库名称 add # 设置引入的函数库类型为静态库...库 , 将找到的路径赋值给 log-lib # 这个路径是 NDK 的 ndk-bundle\platforms\android-29\arch-arm\usr\lib\liblog.so #.../jniLibs/armeabi-v7a") # 链接函数库 # 参数 1 : 本构建脚本要生成的动态库目 标 # 参数 2 ~ ... : 后面是之前预编译的动态库或静态库

    3.8K01

    CentOS7.8下编译muduo库找不到Boost库报错的解决方法

    的 陈硕老师的Github为:https://github.com/chenshuo ?...二、编译muduo库 进入到刚才下载的muduo目录,比如我的腾讯云主机上muduo的下载目录为:/root/GithubProjects ?...很是纳闷,估计是/usr/local/boost目录不是默认的安装目录所以会导致这个问题吧,最后找到了如下两篇博客: Linux下使用CMake进行编译的时候寻找Boost库 cmake使用boost库...四、使用编译muduo-tutorial muduo-tutorial示例程序的README文件描述了如何使用muduo库: Examples of Muduo network library 0)..../ 上面4种方法中,我所熟悉的是第三种和第四种,这里我以cmake第三种为例: 注意:不论使用make还是cmake也好,注意:muduo库的路径需要根据自己编译后的路径为准。

    1.9K20

    CMakeLists.txt 语法介绍与实例演练

    查找指定的库文件 find_library(VAR name path)查找到指定的预编译库,并将它的路径存储在变量中。...默认的搜索路径为 cmake 包含的系统库,因此如果是 NDK 的公共库只需要指定库的 name 即可。...主要开关选项 BUILD_SHARED_LIBS:这个开关用来控制默认的库编译方式,如果不进行设置,使用 add_library 又没有指定库类型的情况下,默认编译生成的库都是静态库。...简单项目(单个源文件) 一个经典的 C 程序,如何通过 cmake 来编译呢?...一般我们采用 cmake 的 out-of-source 方式来构建(即生成的中间产物和源代码分离),这样做可以让生成的文件和源文件不会弄混,且目录结构看起来也会清晰明了。

    2.3K20

    Linux下CMake简明教程

    本文主要讲述在Linux下如何使用CMake来编译我们的程序。...---- 二 简单样例 首先让我们从最简单的代码入手,先来体验下cmake是如何操作的。...---- 六 动态库和静态库的编译控制 有时只需要编译出动态库和静态库,然后等着让其它程序去使用。让我们看下这种情况该如何使用cmake。...设置最终生成的库的名称,还有其它功能,如设置库的版本号等等 LIBRARY_OUTPUT_PATH: 库文件的默认输出路径,这里设置为工程目录下的lib目录 好了,让我们进入build目录下运行cmake...ps:在lib目录下有testFunc的静态库和动态库,find_library(TESTFUNC_LIB testFunc ...默认是查找动态库,如果想直接指定使用动态库还是静态库,可以写成find_library

    1.9K10

    cmake:cpp_redis的find_package脚本 FindCppRedis.cmake

    cpp_redis是个C++11的开源的redis client库,支持cmake构建,但并没有提供CONFIG模式的import target导入脚本,如果希望在cmake下以find_package...方式导入cpp_redis的库,就需要自己写一个MODULE模式脚本,以下为FindCppRedis.cmake脚本实现 FindCppRedis.cmake # FindCppRedis # ----...执行时可接收以下输入变量 CPPREDIS_MT_DIR, [可选],指定MSVC以/MT选项编译的库的安装位置 CPPREDIS_MD_DIR, [可选],指定MSVC以/M选项编译的库的安装位置...CPPREDIS_MSVCRT, [可选],指定当前cppredis库的 MSVC运行库的类型 ‘/MT’ 或 ‘/MD’,默认’/MT’ 如果定义了 CPPREDIS_MT_DIR 或 CPPREDIS_MD_DIR...defined, 则忽略此参数 FindCppRedis.cmake 执行后输出的变量 CPPREDIS_FOUND, 找到 cpp_redis 库为true,否则为false CPPREDIS_INCLUDE_DIR

    66820

    CMake 基础学习

    CMake 常用变量 使用 {}进行变量的引用。例如:message({Hello_VERSION}), Hello为工程名。CMake提供了很多有用的变量。... : 表示库文件的名字 [STATIC | SHARED | MODULE] : 生成的库文件类型 STATIC 静态库,在链接其他目标时使用 SHARED 动态链接库,运行时加载 MODULE...该命令用来查找一个库文件。一个名为的cache条目会被创建来存储该命令的结果。如果找到了该库文件,那么结果会存储在该变量里,并且搜索过程将不再重复,除非该变量被清空。...如果没有找到,结果变量将会是-NOTFOUND,并且在下次使用相同变量调用find_library命令时,搜索过程会再次尝试。....) // 动态链接库或静态链接库的搜索路径 find_library(Foundation Foundation) add_definitions // 为源文件的编译添加由-D引入的宏定义。

    1.8K40

    cmake 添加头文件目录,链接动态、静态库

    添加需要链接的库文件目录LINK_DIRECTORIES 3. 查找库所在目录FIND_LIBRARY 4. 添加需要链接的库文件路径LINK_LIBRARIES 5....为工程生成目标文件 7.最后贴一个完整的例子 参考资料 最近需要将Windows10系统下使用VS2017编译的VC++项目放到CentOS Linux服务器上跑,最简单的当然是使用cmake作为项目编译和管理工具了...env目录,而不是常见的/usr/、/usr/local等目录,使用cmake进行编译时需要注意头文件和库文件的目录的设置。...cmake 添加头文件目录,链接动态、静态库 罗列一下cmake常用的命令。 CMake支持大写、小写、混合大小写的命令。 1....为工程生成目标文件 语法 add_executable( [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL]

    25.6K11

    vscode一键配置CC++多个C及CPP文件编译与tasks.json和launch.json原理

    要么就是直接扔下自己的配置信息就没了,不知道咋来的,也不能拿过来直接用,让我这种小白无从下手,于是就摸索整理一下,帮助一下像我这样小白刚入手的小伙伴们。...launch.json: 这个配置文件是告诉vscode如何来启动调试你的代码程序的,这其中包括你的程序在哪个位置,你用什么工具来调试,调试的时候需要给调试工具传什么参数等。...makefiles是用来组织管理不同文件的编译链接顺序等用,可以简单理解为gcc/g++命令后面那一大串参数都放这里了,不用每次手敲,Cmake就是用来生成makefiles的,因为makefiles靠手写也是很麻烦的...VSCode-C/C++项目一键创建程序( 2022-10-07更,修复了配置小错误和界面提示错误) 因为只是个小工具,所以没有考虑任何美化,如果生成失败了,自主检查一下填写的路径是否正确,路径结尾是否有多余的空格等...(2021/03/07更新) 3.这是执行目录后生成的文件 这是配置信息: 最终说明 说明一: 以上生成的文件,如果不能正确使用,请查看上文中tasks.json中的Unix Makefiles

    7.6K41

    MSVCMinGW中导入glog静态库的正确方式

    然而链接时报错了,无数的错误都是找不到glog的符号(undefined reference)… 我的项目是cmake生成的工程文件,glog也是我自己用cmake编译出来的,为了查找原因我查看了glog...在lib/cmake/glog/glog-targets.cmake文件中找到如下脚本: set_target_properties(glog::glog PROPERTIES INTERFACE_COMPILE_DEFINITIONS...中,加入glog静态库的正确方式是这样的: # GLOG_ROOT_DIR 是glog 的安装路径 find_package(glog REQUIRED CONFIG HINTS ${GLOG_ROOT_DIR...属性中指定了上面4个宏定义,所以聪明的cmake在生成Makefile时会自动在your_project target的编译选项中加入-DGFLAGS_DLL_DECLARE_FLAG -DGFLAGS_DLL_DEFINE_FLAG.../cmake/help/v3.8/manual/cmake-buildsystem.7.html#imported-targets 如下是cmake生成的编译工程文件(flags.make)的样例,

    2.7K60

    关于 CMake 使用,看这一篇可能就够了

    设置编译类型 add_executable(demo demo.cpp) # 生成可执行文件 add_library(common STATIC util.cpp) # 生成静态库 add_library...查找指定的库文件 find_library(VAR name path) 查找到指定的预编译库,并将它的路径存储在变量中。...默认的搜索路径为 cmake 包含的系统库,因此如果是 NDK 的公共库只需要指定库的 name 即可。...主要开关选项 BUILD_SHARED_LIBS:这个开关用来控制默认的库编译方式,如果不进行设置,使用 add_library 又没有指定库类型的情况下,默认编译生成的库都是静态库。...如果 set(BUILD_SHARED_LIBS ON) 后,默认生成的为动态库 CMAKE_C_FLAGS:设置 C 编译选项,也可以通过指令 add_definitions() 添加 CMAKE_CXX_FLAGS

    5.7K26

    在NDK开发之前你应知道的东西

    AndroidStdio3.5的默认目录结构 3.有现成的C++代码,如何让Android调用它?...4.arm64-v8a、armeabi-v7a、x86、x86_64分别是干嘛的? 5.动态链接库.so是什么鬼,如何从c/c++生成.so? 6.libs,jniLibs,jin目录到底该怎么放?...如何自定义文件放置的位置? 7.一些让人糟心的异常 ---- 前置知识 也许你很怕C++,就像你在新手村被3级的boss虐到心理阴影,但是你现在已经50级了,还怕曾经虐你的3级的boss吗?...---- 2.配置输出的.os架构类型 可以通过app下的build.gradle来指定编译的.so类型 注意只有这四种类中,以前很多项目中存在abiFilters 'armeabi'但现在会崩...它们都是 C++ 的动态链接库(Dynamic Link Library ) 而Android作为Linux的一员,C++ 编译出的.so便是顺理成章 那如何将C++编译成.so库?

    65440

    NDK开发(一) :NDK入门指南

    转载请以链接形式标明出处: 本文出自:103style的博客 本文操作以 Android Studio 3.4.2 版本为例 NDK开发(一) :NDK入门指南 NDK开发(二) :JNI的数据类型...SHARED # 库的类型 native-lib.cpp) # 库的源文件 # 引用NDK中的库log,命名为log-lib find_library(...CMake 使用 lib库名称.so 的规范来为库文件命名,库名称即为我们定义的 native-lib。不过我们在Java代码中加载时,还是使用我们定义的库名称 native-lib。...创建 CMake 编译脚本,告知 CMake 如何将原生源文件编译入库。如果导入和关联预编译库或平台库,您也需要此编译脚本。...将 find_library() 命令添加到您的 CMake 构建脚本中以定位 NDK 库。

    97440

    Android JNI 开发

    因为大部分JNI开发的指南,其实是在教我们,如何生成.so文件和如何引入.so文件。 我们参照着博客的步骤,修改build.gradle,添加cmakelists,写JNI接口,写c++。...不论我们是开发一个工程,还是开发一个库,只要当我们使用C++开发,都会生成对应的.so文件。 所以JNI开发的核心是,我们生成so的过程,和使用so的过程。...其中,两个externalNativeBuild与ndk是与JNI相关的配置。 我们写好的.cpp/.h文件需要经过编译才能生成.so,让apk得以调用。...该指令的作用为查找库,指令语法如下: find_library ( name1 [path1 path2 ...]) target_link_libraries 该指令的作用为将目标文件与库文件进行链接...此时,我们生成APK时,系统如何辨认两个libnative2-lib.so呢。

    1.3K10

    Android的JNI【实战教程】5⃣️---Android Studio 2.2 以上 NDK开发

    虽然现在AS 2.2 之后,jni开发配置相当方便,但是还是建议大家从我的第一篇文章看起,从基础知识入手,并且要了解之前是如何配置NDK工程的,这是一个循序渐进的过程。...确保所有Java需要调用的C方法都放在extern “C”中,这样CMake才会帮我们正确编译。 好啦 到这里 新鲜东西就已经都讲完了。 接下来看看如何在旧工程中添加最新NDK Project。...选中 Change Folder Location 将JNI更换成cpp (为了统一 ,系统自动生成的是cpp文件 CMakeLists.txt里面配置也是cpp路径 ) ? ? ?...文件 #include #include extern "C" } ---- 4 在APP目录下添加 CMakeLists.txt 文件 代码和上面创建后生成的一样...切记: jni编译生产的so库的名字和路径要正确 # For more information about using CMake with Android Studio, read the # documentation

    66720
    领券