如何让 cmake 使用另一个 opencv 目录,而不是 ubuntu 中的系统目录?

How to let cmake use another opencv directory other than the system's in ubuntu?

本文关键字:ubuntu 系统目录 目录 cmake opencv 另一个      更新时间:2023-10-16

具体来说,我想包括my/path/to/opencv/release的opencv,我自己的opencv是在/usr/local/include中构建的,而不是系统的opencv库。我如何设置cmake来实现这一点?我用的是Ubuntu 14.04

提供一个示例,下面是Luajit库的Find-CMake文件。你的CMake项目有一个可能叫做"FindOpenCV.cmake"。它很可能有一个手动添加的默认安装路径,例如:"/usr/include/luajit-2.0/usr/local/include/luajit-2.0",您可以将这些DIR更改为所需的安装目录。如果默认路径包含在变量中,您可以找到该变量的定义并更改它(最好通过配置选项),或者用字符串覆盖它。

# Try to find Lua or LuaJIT depending on the variable ENABLE_LUAJIT.
# Sets the following variables:
#   LUA_FOUND
#   LUA_INCLUDE_DIR
#   LUA_LIBRARY
#
SET (LUA_FOUND FALSE)
SET (LUA_INTERPRETER_TYPE "")
SET (LUA_INTERPRETER_TYPE "LuaJIT")
SET (LUA_LIBRARY_NAME luajit-5.1)
SET (LUA_INCLUDE_DIRS /usr/include/luajit-2.0 /usr/local/include/luajit-2.0)
FIND_PATH (LUA_INCLUDE_DIR lua.h ${LUA_INCLUDE_DIRS} 
            HINT ${LUAJIT_INCLUDE_DIR_HINT}/include)
FIND_LIBRARY (LUA_LIBRARY NAMES ${LUA_LIBRARY_NAME} PATHS /usr/lib /usr/local/lib
            HINT ${LUAJIT_INCLUDE_DIR_HINT}/bin)
#...
MARK_AS_ADVANCED ( LUA_INCLUDE_DIR LUA_LIBRARY)

有多种方法可以实现这一点,您可以修改FindOpenCV。cmake文件,你set cmake变量OpenCV_DIR之前找到库https://stackoverflow.com/a/9835300/2079934,你可以导出环境变量OpenCV_DIR之前运行cmake https://stackoverflow.com/a/16959771/2079934。

我建议不要硬编码任何库路径到CMakeLists.txt,这会带走CMake的所有好处。在Linux中,我会使用export来设置OpenCV_DIR,在其他操作系统中,CMake GUI更常见,您可以在GUI中编辑路径变量。