0

我并不总是用 C 语言编程,但当我这样做时,通常是为微控制器编写的,所以请耐心等待。

在尝试在 Matlab 中为 Simulink 块编译它之前,我试图运行一个 C 程序的简单测试。我使用 Clion 作为我的 IDE。如果我在命令行上用gcc -o listener exlcm_example_t.o listener.o 'pkg-config lcm --libs'我的程序编译就可以了。现在,如果我尝试在我的 IDE 中编译,我会发现系统找不到 x86 等的符号。

我为包括其他图书馆在内的人们找到了一些类似的解决方案,但它们似乎不适用于我的情况。特别是,我正在尝试包含轻量级通信和编组系统LCM,以便进行一些进程间通信。

我在 SE 上尝试了几个解决方案,它们通常遵循此处概述的内容。在 IDEs 编辑器中,如果我这样做#include <lcm/lcm.h>,我可以这样做Go To -> Declaration,它会将我带到 h 文件,所以它会以某种方式找到它,而不是我需要它的地方。

根据我的阅读,如果 make 没有库模块,我需要使用我自己的 *.cmake 文件。我碰巧在这里找到了一个。我的目录如下所示:

MyProject: - cmake -- 模块 --- *.cmake - cmakelists.txt - main.cpp

非常感谢您的帮助。

4

1 回答 1

1

通过在原始帖子中使用 FindLCM.cmake 构建我的目录并使用此 cmakelists.txt 文件自行解决:

    cmake_minimum_required(VERSION 3.2)
    project(lcm_mp)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    set(SOURCE_FILES main.cpp)
    add_executable(lcm_mp ${SOURCE_FILES})
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
    find_package(LCM REQUIRED lcm)
    include_directories(${LCM_INCLUDE_DIRS})
    set(LIBS ${LIBS} ${LCM_LIBRARIES})
    target_link_libraries(lcm_mp ${LIBS})

非常感谢任何有关改进此文件的意见。

于 2015-09-01T06:32:02.093 回答