我并不总是用 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/