CMAKE-如何将塔库与OpenCV -C 项目联系起来
CMake - How to include and link Pylon library with OpenCV-C++ project
我正在尝试从与Jetson TX1
连接的BASLER摄像机访问图像(Ubuntu 16.04)。我将OpenCV-C++
与Pylon
库一起使用。我正在尝试使用cmake
链接Pylon
。我有以下CMakeLists.txt
文件:
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
//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[])
{
...................................
..................................
}
我想这是包括塔库的最佳方法。
在cmakelists.txt中定义在哪里可以找到塔库,
find_package(Pylon QUIET)
if (NOT ${Pylon_FOUND})
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindPylon.cmake")
endif()
这里findpylon.cmake可以以这种方式写下
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()
然后,您可以通过以下方式将塔包括在lib或可执行二进制中的文件,
include_directories(
#add other includes directories
${Pylon_INCLUDE_DIRS}
)
相同的方式,您可以通过引用以下方式链接塔lib目录:$Pylon_LIBRARIES
。希望这可能会有所帮助谁将再次陷入这个问题。
我让相机正常工作。我不得不将/opt/pylon5/lib64
作为参数的一些文件添加到target_link_libraries()
。我的CMakeLists.txt
文件看起来像:
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)
相关文章:
- 为什么在Visual Studio的OpenCV项目中使用/MT时仍然需要dll?
- CMAKE-如何将塔库与OpenCV -C 项目联系起来
- 如何使用libsvm在OPENCV项目中生成的模型
- 使用CMake编译OpenCV项目时出错
- OpenCV 项目无法编译
- 在VisualStudio 2013[x64 machine]上调试openCV项目的设置
- 无法使用 CMake 生成 OpenCV 项目
- 如何以及在哪里为Visual C++ OpenCV项目添加调试符号
- OpenCV 项目在将直方图应用于黑色图像时崩溃
- 如何在编译OpenCV项目时禁用TBB
- opencv项目中的CMakeLists.txt出错
- cmake 在 OpenCV C++ 项目中不起作用
- 在Cygwin上使用CMake编译OpenCV项目,并为Windows安装OpenCV
- 无法从 IDE 运行 VS2010 opencv 项目
- 试图在Dev c++上编译OpenCV项目时出现错误
- 如何构建openCV项目到dll
- 在eclipse ubuntu上构建opencv项目失败
- 在没有OpenCV包管理器的Eclipse上创建Android OpenCV项目
- 无法使用cmake构建Opencv项目
- 将 OpenCV 项目升级到最新版本