我正在使用OpenCV与gcc和cmake。我找到了一个教程cmake.html .In --文件CMakeLists.txt,有一些变量,比如OpenCV和OpenCV_INCLUDE_DIRS。
cmake_minimum_required(VERSION 3.9)
project(VideoRecord)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(VideoRecord main.cpp)
target_link_libraries(VideoRecord ${OpenCV_LIBS})我想知道在哪里可以找到这些变量定义.
编辑
谢谢你的回答。我试图搜索FindOpenCV.cmake,但失败了。
先试试。
➜ ~ cmake --help-module-list | grep "FindOpen"
FindOpenACC
FindOpenAL
FindOpenCL
FindOpenGL
FindOpenMP
FindOpenSSL
FindOpenSceneGraph
FindOpenThreads再试一次。
➜ / find . "FindOpenCV.cmake"另外,我的操作系统是osx,我用cmake brew**.安装了。我手动安装和安装** OpenCV .
发布于 2018-01-16 09:13:33
这些变量是OpenCV附带的包配置脚本的一部分。
请注意,find_package是一只双头野兽。经典的操作模式是查找库通过查找脚本。这仍然是目前对不知道CMake的第三方库所使用的方法。但是,如果您的依赖本身是用CMake构建的,那么它可以提供包配置文件,这允许一种更强大的操作模式。
这里的想法是,不是告诉CMake如何找到依赖项,而是依赖项本身告诉CMake客户端如何找到依赖项。这是像OpenCV和Qt这样的库所采用的方法。
为了回答您的问题,这些变量是由本地OpenCV安装中的包配置文件设置的,该文件的模板是cmake/templates/OpenCVConfig.cmake.in下的可以在OpenCV源代码中找到。。
发布于 2018-01-16 07:11:47
它们是在CMake OpenCV模块中定义的。CMake有许多帮助查找各种库的模块,比如OpenCV (FindOpenCV.cmake模块)。使用此命令,您可以获得CMake支持的模块列表:
cmake --help-module-list有些库带有自己的*.cmake模块,应该安装在某些系统路径中。如果您正在使用Ubuntu,则您的cmake模块应该本地化为:
/usr/share/cmake/Modules/如果没有,只需搜索文件FindOpenCV.cmake。在该文件中,您将找到这些变量。
发布于 2018-01-16 07:56:46
通常,您可以从要查找的包的文档或源代码中获得变量名称。
通常,您可以从提供的find_package模块文件名派生要放入FindFoo.cmake的名称,因为"Foo“将是名称。查找模块要么是CMake的一部分,要么是第三方库。
如果没有查找模块,一些模块将提供FooConfig.cmake文件,其中"Foo“再次是要放入find_package的字符串。
如果您既没有查找文件,也没有配置文件,则需要通过其他方法查找库,例如FindPkgConfig或find_library / find_file。
https://stackoverflow.com/questions/48275576
复制相似问题