c - 包括 cmakelists 中已安装的库

标签 c cmake clion lcm-data-marshalling

我并不总是用 C 语言编程,但当我这样做时通常是针对微 Controller 的,所以请耐心等待我。

在尝试在 Matlab 中将 C 程序编译为 Simulink block 之前,我尝试运行一个简单的 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 。我的目录如下所示:

我的项目: -cmake -- 模块 --- *.cmake -cmakelists.txt - main.cpp

非常感谢您的帮助。

最佳答案

通过使用 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})

非常感谢任何有关改进此文件的评论。

关于c - 包括 cmakelists 中已安装的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324919/

相关文章:

c - libtcod - 移动功能不响应输入

C - Gtk3- 开罗 - DrawArea - 平面笛卡尔 - 如何添加文本?

python - 请求的模块不可用 : vtkRenderingOpenGL-cmake/OpenCVDetectVTK. cmake:6 (find_package)

c - 在执行期间手动将 stdin 重定向到文件

c++ - 在 CMake CMakeLists.txt 中添加对 NewT 的库引用

c - 释放列表数组

c - 稀疏抛出的警告

c++ - 如何在 Linux 中编译 Box2D?

CMake - 链接到从ExternalProject_add()下载的库

Makefile 项目中的 CLion 索引