cmake如何知道include文件和lib在哪里

How can cmake know where the include files and libs are?

本文关键字:lib 在哪里 文件 include 何知道 cmake      更新时间:2023-10-16

我正在使用cmake成功编译一个用C++和OpenCV编写的简单DisplayImage项目。我遵循了以下指示:http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html。我真的不知道cmake是如何从CMakeLists.txt文件中检索OpenCV includes和libs的:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

我的意思是,我不应该告诉它在哪里搜索OpenCV吗?例如/usr/local/lib或/usr/local/include/opencv。。。
它是如何使用OpenCV的,只告诉它我想使用OpenCV,而不指定在哪里查找?我想我错过了什么。。请帮忙!

find_package将运行cmake模块(即脚本(,该模块将在OpenCV的预定义目录中查找。该模块将设置cmake变量,如OpenCV_INCLUDE_DIRS和OpenCV_LIBRS。如果你做得正确,你仍然必须将这些目录和库添加到项目中的相应列表中,因为这取决于你的项目正在做什么:你可能正在同一个make文件中构建多个可执行文件和/或库,但可能不想将所有库链接到所有可执行文件/库。

如果你对这个模块的工作原理感兴趣,你可以看看它。通常你会在/usr/share/cmake-2.8/Modules中找到它(用你正在使用的cmake版本替换"2.8"(。我的机器上没有FindOpenCV.cmake文件,所以我想它是随OpenCV一起提供的。cmake本身也提供了其他Find脚本,因此您会有很多文件在其中。(该目录还有其他模块,不仅仅是find_package脚本。(