如何在cmake中包含可在g ++上运行的库,反之亦然

问题描述 投票:0回答:1

我正在使用Raspberry Pi进行编码,在将使用OpenCV和Pigpio库的代码组合到c ++中时遇到一些麻烦。我有一些使用CMake编译的OpenCV的代码,以及其他使用g ++编译的Pigpio的代码。我无法使OpenCV库与g ++一起使用,并且我无法弄清楚如何将Pigpio库添加到CMakeLists。

我不知道是否可以将-lpigpio添加到CMakeLists中

g++ -Wall -pthread -o pigpio pigpio.cpp -lpigpio

我尝试创建一个Findpigpio.cmake复制此https://github.com/joan2937/pigpio/blob/master/util/Findpigpio.cmake

并将其添加到/usr/share/cmake-3.6/Modules,然后使用以下命令创建CMakeLists.txt:


cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

project(pigpio1_project)

find_package(pigpio REQUIRED)


include_directories(${pigpio_INCLUDE_DIRS})


add_executable(pigpio1 pigpio1.cpp)

target_link_libraries(pigpio1 LINK_PRIVATE ${pigpio_LIBS})

但是执行“ cmake .. && make”时它显示了以下错误:

Scanning dependencies of target pigpio1
[ 50%] Building CXX object CMakeFiles/pigpio1.dir/pigpio1.cpp.o
[100%] Linking CXX executable pigpio1
CMakeFiles/pigpio1.dir/pigpio1.cpp.o: In function `main':
pigpio1.cpp:(.text+0x1c): undefined reference to `gpioInitialise'
pigpio1.cpp:(.text+0x64): undefined reference to `gpioServo'
pigpio1.cpp:(.text+0x70): undefined reference to `gpioServo'
pigpio1.cpp:(.text+0x84): undefined reference to `gpioServo'
pigpio1.cpp:(.text+0x90): undefined reference to `gpioServo'
collect2: error: ld returned 1 exit status
CMakeFiles/pigpio1.dir/build.make:94: recipe for target 'pigpio1' failed
make[2]: *** [pigpio1] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/pigpio1.dir/all' failed
make[1]: *** [CMakeFiles/pigpio1.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2


c++ cmake include g++ libraries
1个回答
0
投票

首先,我想澄清一件事。 CMAKE只是一个构建工具,它将使用g ++或clang等编译器来编译代码。

回到您的下一个问题。您应该能够使用Cmakelists创建一个Pigpio库,并将其与您的主要可执行代码以及opencv库链接。例如,>

add_library(PIGPIO SHARED pigpio.cpp)
target_link_libraries(PIGPIO pthread)

现在您有了可以用于实际可执行文件的PIGPIO库以及像这样的opencv库,例如:

add_executable(YOUR_MAIN src/yourmain.cpp)
target_link_libraries(YOUR_MAIN PIGPIO ${OpenCV_LIBS})

我希望它能回答您的问题!

© www.soinside.com 2019 - 2024. All rights reserved.