【问题标题】:How to use CMake to include a library, then include its headers using angled brackets in source file?如何使用 CMake 包含一个库,然后在源文件中使用尖括号包含其标题?
【发布时间】:2015-04-03 00:35:49
【问题描述】:

我用自制软件安装了opencv和openni和nite。

我已经设法为 opencv 制作了一个 cmake 文件,不知何故它已经为其目录 OpenCV_LIBS 定义了路径,不知道我是如何或在哪里找到的。

cmake_minimum_required(VERSION 2.8)
project( main )
find_package( OpenCV REQUIRED )
add_executable( main main.cpp )

target_link_libraries( main ${OpenCV_LIBS} )

安装toktakke's build openni 和 nite 后。 我试了一下,并扩展到以下内容,但我再次不确定在哪里可以找到它们目录的这些别名。

cmake_minimum_required(VERSION 2.8)
project( main )
find_package( OpenCV REQUIRED )
include_directories(${OPENNI_INCLUDE})
Include_directories(${NITE_INCLUDE})
add_executable( main main.cpp)
target_link_libraries( main ${OpenCV_LIBS} ${OPENNI_LIB} ${NITE_LIB} )

但它没有很好地集成

.bash_profile 我有以下内容:

export OPENNI_INCLUDE="/usr/local/Cellar/openni/1.5.7.10/include/ni"
export OPENNI_LIB="/usr/local/Cellar/openni/1.5.7.10/lib"
export OPENNI_DIR="/usr/local/Cellar/openni/1.5.7.10"
export NITE_INCLUDE="/usr/local/Cellar/nite/1.5.2.21/include/nite"
export NITE_LIB="/usr/local/Cellar/nite/1.5.2.21/lib"
export NITE_DIR="/usr/local/Cellar/nite/1.5.2.21"

现在我收到以下错误:

fatal error: 'XnOpenNI.h' file not found
#include <XnOpenNI.h>

【问题讨论】:

    标签: macos opencv cmake openni nite


    【解决方案1】:

    你应该添加

    include_directories($ENV{OPENNI_INCLUDE})
    

    在您的项目定义之后。这会将 OPENNI 包含文件的路径作为 -I 选项添加到编译器。更多关于“include_directories”命令的信息是here

    关于 OpenCV_LIBS 的来源:

    当使用 'find_package( OpenCV REQUIRED )' 时,cmake 会自动调用 FindOpenCV.cmake(在 CMAKE_MODULE_PATH 变量指定的路径中找到)。 FindOpenCV.cmake 负责实际定位 OpenCV 库和包含文件,并定义 OpenCV_LIBS 和一堆其他变量。

    这使它“神奇地”为您提供。更多关于 find_package 魔法的信息可以在CMake docs找到。

    【讨论】:

    • 如果命名空间openni仍然无法识别怎么办? openni 库中的类也不是(如 Device,或 OpenNI::initialize(),或 OpenNI::shutdown())
    • 我不是 OpenNI 方面的专家,但您可能包含了错误的文件。对于 C++ 接口,如果我没记错的话,你应该包含 XnCppWrapper.h。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2021-05-29
    • 2021-09-11
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2016-03-20
    相关资源
    最近更新 更多