gpt4 book ai didi

c++ - cmake 如何知道包含文件和库在哪里?

转载 作者:行者123 更新时间:2023-11-28 05:36:43 25 4
gpt4 key购买 nike

我正在使用 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 包含和库:

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_LIBS。正如您所做的那样,您仍然必须将这些目录和库添加到项目中的适当列表中,因为这取决于您的项目正在做什么:您可能正在同一个 make 文件中构建多个可执行文件和/或库,但可能不想将所有库链接到所有可执行文件/库。

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

关于c++ - cmake 如何知道包含文件和库在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com