如何链接到cmake中的mosquitto lib?

时间:2016-11-18 03:38:08

标签: c++ cmake mosquitto libmosquitto

我已使用此list comprehension在我的Rpi中安装了mosquitto lib/usr/local/binmosquitto_pub and mosquitto_sub,mosquitto服务器deamon位于/usr/local/sbin

然后尝试链接我的cmake文件中的库,如下所示。

cmake_minimum_required(VERSION 2.6)

PROJECT(MosquittoTest)
# The version number.
set (VERSION_MAJOR 1)
set (VERSION_MINOR 0)

include_directories("${PROJECT_BINARY_DIR}")

# Linked libariries
#For MQTT
#location of raspicam's cmake file is /usr/src/raspicam-0.1.3/build
link_directories(/usr/local/sbin)
target_link_libraries (MosquittoTest  mosquitto)

ADD_EXECUTABLE(MosquittoTest MosquittoTest.cpp)

# add the install targets
install (TARGETS MosquittoTest DESTINATION bin)
install (FILES MosquittoInterface.h DESTINATION include)

然后我有错误,因为无法为目标MosquittoTest指定链接库。

有人将gcc make中的mosquitto lib链接为

CC = gcc
CFLAGS = -I
DEPS = mosquitto.h

LIBS = -llibmosquitto

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

make: test.c
    $(CC) -m32 -Wall -o $@ $^ $(CFLAGS) $(LIBS)

.PHONY: clean

我的cmake文件有什么问题?

2 个答案:

答案 0 :(得分:1)

使用现代 CMake,您可以像这样使用 pkg-config 导入的目标:

cmake_minimum_required(VERSION 3.10)
project(MosquittoTest)

find_package(PkgConfig REQUIRED)
pkg_check_modules(Mosquitto REQUIRED IMPORTED_TARGET libmosquitto)

add_executable(MosquittoTest MosquittoTest.cpp)
target_link_library(MosquittoTest PkgConfig::Mosquitto)

将为您设置所有编译选项、链接选项、链接目标等。

答案 1 :(得分:0)

mosquitto图书馆被称为lmosquitto而不是llibmosquitto。

JimsFridge: JimsFridge.cpp StopWatch.cpp
g++ JimsFridge.cpp StopWatch.cpp -o JimsFridge -lwiringPi -lstdc++ -lmosquitto