包括在cmakelists中安装的库

时间:2015-09-01 06:28:20

标签: c cmake clion lcm-data-marshalling

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

在尝试在Matlab中为Simulink块编译之前,我试图对C程序进行简单的测试。我使用Clion作为我的IDE。如果我使用gcc -o listener exlcm_example_t.o listener.o 'pkg-config lcm --libs'在命令行上编译,我的程序编译正常。现在,如果我尝试在我的IDE中编译,我得到系统无法找到x86的符号等。

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

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

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

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

非常感谢帮助。

1 个答案:

答案 0 :(得分: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})

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