首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake -如何在OpenCV++项目中包含和链接塔库

CMake -如何在OpenCV++项目中包含和链接塔库
EN

Stack Overflow用户
提问于 2017-10-03 19:19:05
回答 2查看 5.1K关注 0票数 1

我正在尝试访问与Jetson TX1(Ubuntu16.04)接口的Basler相机的图像。我正在使用OpenCV-C++Pylon库来完成这个任务。我正在尝试使用Pylon链接cmake。我有以下CMakeLists.txt文件:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.5.1)
project(basler_test)
set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl, -E")
find_package(OpenCV REQUIRED)
include_directories(/opt/pylon5/include)
link_directories(/opt/pylon5/lib64)
add_executable(basler_test basler_test.cpp)
target_link_libraries(basler_test ${OpenCV_LIBS} /opt/pylon5/include/pylon/PylonIncludes.h)

cmake .命令运行良好,但当我执行make时,它提供:

fatal error: pylon/Platform.h: No such file or directory compilation terminated

我检查了上面的文件,它确实存在于与PylonIncludes.h相同的目录中。所以,我认为这个错误是因为在CMakeLists.txt中没有正确地设置一些东西。我没有足够的经验创造他们,以确定什么是错误的。帮帮忙吧。

下面是源文件的相关部分:basler_test.cpp

代码语言:javascript
运行
复制
//This is a test program to check the functionality of Basler dart daA2500-14uc Camera.  

#define saveImages 0
#define recordVideo 1

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/video.hpp>
#include <pylon/PylonIncludes.h>
#ifdef PYLON_WIN_BUILD
#include <pylon/PylonGUI.h>
#endif

static const uint32_t c_countOfImagesToGrab = 10;

int main(int argc, char* argv[])
{
         ...................................
         ..................................
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-03 20:40:16

我把相机修好了。我不得不从/opt/pylon5/lib64中添加几个文件作为target_link_libraries()的参数。我的CMakeLists.txt文件看起来如下:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.5.1)
project(basler_test)
set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl, -E")
find_package(OpenCV REQUIRED)
include_directories(/opt/pylon5/include)
link_directories(/opt/pylon5/lib64)
add_executable(basler_test basler_test.cpp)
#target_include_directories(basler_test /opt/pylon5/include)
target_link_libraries(basler_test ${OpenCV_LIBS} pylonutility pylonbase GCBase_gcc_v3_0_Basler_pylon_v5_0)
票数 3
EN

Stack Overflow用户

发布于 2018-07-12 11:55:03

我想这是最好的方法包括塔图书馆。

在CMakeLists.txt中定义了用这种方式在哪里找到Pylon库,

代码语言:javascript
运行
复制
find_package(Pylon QUIET)
if (NOT ${Pylon_FOUND})
    include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindPylon.cmake")
endif()

这里可以用这种方式编写FindPylon.cmake,

代码语言:javascript
运行
复制
        set(PYLON_ROOT $ENV{PYLON_ROOT})
        if (NOT DEFINED ENV{PYLON_ROOT})
            set(PYLON_ROOT "/opt/pylon5")
        endif()

        set(_PYLON_CONFIG "${PYLON_ROOT}/bin/pylon-config")
        if (EXISTS "${_PYLON_CONFIG}")
            set(Pylon_FOUND TRUE)
            execute_process(COMMAND ${_PYLON_CONFIG} --cflags-only-I OUTPUT_VARIABLE HEADERS_OUT)
            execute_process(COMMAND ${_PYLON_CONFIG} --libs-only-l OUTPUT_VARIABLE LIBS_OUT)
            execute_process(COMMAND ${_PYLON_CONFIG} --libs-only-L OUTPUT_VARIABLE LIBDIRS_OUT)
            string(REPLACE " " ";" HEADERS_OUT "${HEADERS_OUT}")
            string(REPLACE "-I" "" HEADERS_OUT "${HEADERS_OUT}")
            string(REPLACE "\n" "" Pylon_INCLUDE_DIRS "${HEADERS_OUT}")

            string(REPLACE " " ";" LIBS_OUT "${LIBS_OUT}")
            string(REPLACE "-l" "" LIBS_OUT "${LIBS_OUT}")
            string(REPLACE "\n" "" Pylon_LIBRARIES "${LIBS_OUT}")

            string(REPLACE " " ";" LIBDIRS_OUT "${LIBDIRS_OUT}")
            string(REPLACE "-L" "" LIBDIRS_OUT "${LIBDIRS_OUT}")
            string(REPLACE "\n" "" LIBDIRS_OUT "${LIBDIRS_OUT}")

            set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
            foreach (LIBDIR ${LIBDIRS_OUT})
                link_directories(${LIBDIR})
            endforeach()
        else()
            set(Pylon_FOUND FALSE)
        endif()

然后,您可以通过以下方式将Pylon包含的文件包含到lib或可执行二进制文件中,

代码语言:javascript
运行
复制
include_directories(
        #add other includes directories 
        ${Pylon_INCLUDE_DIRS}
)

同样,您可以通过引用以下内容来链接Pylon目录:$Pylon_LIBRARIES。希望这会对谁能再次介入这个问题有所帮助。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46551861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档