【发布时间】:2019-10-29 21:11:13
【问题描述】:
[已解决] 我在 Raspberry Pi 中进行编码,并且在组合使用 C++ 中的 OpenCV 和 pigpio 库的代码时遇到了一些麻烦。我有一些使用 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
我可以让它在 Cmake 中工作(感谢 tsyvarev 的评论)我没有使用 pigpio 库变量的正确名称。
【问题讨论】:
-
欢迎来到 Stack Overflow!在这里,我们期望一个问题集中在一个单个问题上。但您的问题似乎涉及两个不同的事情:将库与命令行和 CMake 链接。请选择一个问题。另外,请确保您在询问之前已经搜索过。例如。 stackoverflow.com/questions/43136418/…、stackoverflow.com/questions/8774593/…等
-
您使用的
Findpigpio.cmake脚本设置变量pigpio_LIBRARY、pigpiod_if_LIBRARY和pigpiod_if2_LIBRARY。但是您使用了脚本根本没有触及的pigpio_LIBS变量..
标签: c++ cmake include g++ libraries