CMake无法在树莓派上编译

墨西哥

我是cmake的新手。使用cmake,我可以在笔记本电脑上编译项目,但是在树莓派上无法正常工作。

这是我在树莓上得到的错误:

-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
-- checking for one of the modules 'glib-2.0'
-- Found GLib: /usr/lib/arm-linux-gnueabihf/libglib-2.0.so (found   version "2.42.1") 
-- Found mhd: /usr/include  
CMake Error at cmake/FindGLIB.cmake:39 (add_library): add_library cannot create imported target "glib-2.0" because another target with the same name already exists.
Call Stack (most recent call first):librerie/CMakeLists.txt:2 (find_package)

-- Found GLib: /usr/lib/arm-linux-gnueabihf/libglib-2.0.so (found version "2.42.1") 
-- Configuring incomplete, errors occurred!
See also "/home/pi/pl1/CMakeFiles/CMakeOutput.log".

这是我的项目结构:

src->
---- CMakeLists.txt
---- main.c
---- librerie->
-------------- CMakeLists.txt
-------------- cJSON.c
-------------- cJSON.h
-------------- config.c
-------------- config.h
-------------- server_web.c
-------------- server_web.h
-------------- funzioni_thread.c
-------------- funzioni_thread.h
---- cmake->
-------------- FindGLIB.cmake
-------------- FindMHD.cmake

这是第一个CMakeLists:

cmake_minimum_required (VERSION 2.6)
project (TestPL)

include_directories("${PROJECT_BINARY_DIR}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")

find_package(GLIB REQUIRED)
find_package(MHD REQUIRED)

add_subdirectory (librerie)
set (EXTRA_LIBS ${EXTRA_LIBS} librerie)

include_directories (${GLib_INCLUDE_DIRS} ${EXTRA_LIBS})

# add the executable
add_executable(TestPL main.c)
target_link_libraries (TestPL ${GLib_LIBRARY} ${MHD_LIBRARY} ${EXTRA_LIBS} m)

这是图书馆目录中的CMakeLists:

find_package(GLIB REQUIRED)
find_package(MHD REQUIRED)
include_directories (${GLib_INCLUDE_DIRS} ${EXTRA_LIBS})

add_library (librerie cJSON.c config.c generic.c server_web.c  funzioni_thread.c)
target_link_libraries (librerie ${GLib_LIBRARY} ${MHD_LIBRARY})

我究竟做错了什么?

齐瓦列夫

你打了两次

find_package(GLIB REQUIRED)

第一次从顶层调用它CMakeLists.txt并定义glib-2.0目标。第二次调用它,librerie/CMakeLists.txt然后尝试glib-2.0再次创建这就是为什么您看到该错误消息的原因:该目标已在此范围中定义。

可能的解决方法是find_package()先进入库子目录,然后再调用顶级CMakeLists.txt

add_subdirectory (librerie)

find_package(GLIB REQUIRED)
find_package(MHD REQUIRED)

由于导入的目标具有本地可见性,因此从子目录librerie /调用glib-2.0所定义的目标从该子目录返回后将不可见。因此,从顶级目录进行的第二次调用将成功。find_package(GLIB)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

树莓派上Vim的Solarized主题

来自分类Dev

树莓派上的Scala Web框架性能

来自分类Dev

在树莓派上用蓝牙测量距离

来自分类Dev

树莓派上的WiFi上的Python套接字

来自分类Dev

在树莓派上自动启动

来自分类Dev

树莓派上的JavaFX动画

来自分类Dev

在树莓派上升级opencv

来自分类Dev

无法在树莓派上为python3.4安装urllib3

来自分类Dev

我可以在树莓派上运行matlab吗?

来自分类Dev

树莓派上的Edge浏览器?

来自分类Dev

更改树莓派上的默认SFTP目录

来自分类Dev

为什么jvm无法在树莓派上写入gpio?

来自分类Dev

如何在树莓派上安装ncurses?

来自分类Dev

SignalR无法在Windows 10的树莓派上运行

来自分类Dev

在树莓派上远程构建C程序

来自分类Dev

树莓派上的ESC的PWM频率和占空比

来自分类Dev

无法将Arduino ClearCore设备连接到树莓派上托管的MQTT服务器

来自分类Dev

Python sounddevice在树莓派上不产生声音

来自分类Dev

如何在树莓派上停止或卸载屏幕?

来自分类Dev

在树莓派上用蓝牙测量接近度

来自分类Dev

树莓派上的WiFi上的Python套接字

来自分类Dev

在树莓派上自动启动

来自分类Dev

在Java中读取树莓派上的引脚的值

来自分类Dev

在树莓派上打开同步端口

来自分类Dev

从IDE在树莓派上访问git

来自分类Dev

树莓派上的pip安装失败

来自分类Dev

如何在树莓派上编译 scanbd?

来自分类Dev

无法让 CMAKE 编译项目

来自分类Dev

fstream 无法在树莓派上写入/打开文件