Windows 에서 Mosquitto 설치하기

Home

Window Mosquitto Source build, debug

목차

Mosquitto 코드를 Debuging하며 이해하기 위해 작성하였습니다.
MQTT 프로토콜에 대해 잘 모르신다면 MQTT 프로토콜 이란?을 보고 오시기 바랍니다.

개발 환경

  • Mosquitto-1.4.14 (구버전도 가능)
  • Visual studio 2015 (2017도 가능)
  • Window 10 pro 64bit (Window 7도 가능)



소프트웨어 설치

모든 설치 환경을 32bit로 맞춰야 함

Window Visual studio Express 2015 다운


Download and unzip cmake

  • libwebsocket, mosquitto 프로젝트의 CmakeLists.txt 에 따라 프로젝트를 빌드하여 생성하기 위해 필요

MQTT


pthread-win32 download & install

  • Mosquitto에서 저 경로에 pthreads라는 폴더를 찾기 때문에 꼭 이름, 경로가 일치해야 함 pthreads위에 또 폴더가 존재해선 안됨
    c:\pthreads\ 경로에 unzip

MQTT


OpenSSL library download & install

  • 컴파일을 위해서는 Light 버전이 아닌 FULL 버전 설치, (프로그램 실행만을 위해서는 Light 버전)
    pthreads와 마찬가지로 c:\OpenSSL-Win32\ 경로에 unzip

MQTT


libwebsocket source download

  • 최신버전 다운
    마찬가지로 c:\libtemp\ 경로에 unzip

MQTT


mosquitto source download

  • mosquitto1.4.14 다운
    마찬가지로 c:\mostemp\ 경로에 unzip

MQTT


  • 완료 됐을 시 총 4개의 폴더가 c:\에 있어야 함

MQTT



Cmake를 이용하여 websocket.dll을 얻기 위함입니다. 쉽지 않으니 천천히 경로에 유의하며 따라오세요.

libwebsocket

Cmake Configuration

  • Cmake-gui 를 열어 libwebsocket 빌드 준비

MQTT


  • C\libtemp\libwebsockets-2.4.1\의 위치에 build Directory 생성

MQTT


  • Cmake-gui 설정

MQTT


  • Configure를 클릭하여 Visual Studio 14 2015 선택, 사용하는 Visual Studio 버젼이 2017이면 Visual Studio 15 2017 선택

MQTT


  • 에러 창이 나온다면 ok 클릭

MQTT


  • CMAKE_INSTALL_PREFIXC:\libtemp\libwebsockets-2.4.1 로 변경

MQTT


  • OpenSSL 경로 추가

MQTT


  • LWS_WITH_SSL 체크 해제 후 Configure 클릭

MQTT


  • Configure done 이 확인된 후 Generate 버튼을 클릭하여 프로젝트 생성

MQTT


  • Generate done 확인 후 Open Project클릭하여 프로젝트 Open

MQTT


Visual Studio Configuration

  • Release 와 Win32 상태 확인 후 ALL_BUILD 를 이용하여 빌드

MQTT


  • websocket.dll 이 생성되었는지 확인

MQTT



Visual Studio 2015에서 디버깅 하기 위함입니다. 진행하며 부족하다고 나온 dll 파일은 해당 프로젝트의 debug directory에 넣으면 해결할 수 있습니다.

mosquitto

Cmake Configuration

  • C:\mostemp\mosquitto-1.4.14\의 위치에 build Directory 생성

MQTT


  • Source 코드 경로와 build 경로를 맞춰준 뒤 configure 버튼 클릭

MQTT


  • Configure를 클릭하여 Visual Studio 14 2015 선택 후 finish 클릭

MQTT


  • 에러가 나면 ok 클릭 (에러가 나도 다음 절차 후에 해결 가능)

MQTT


  • Add Entry를 눌러 OpenSSL 경로 추가해 주고 configure 를 다시 클릭

MQTT


  • WITH_WEBSOCKETS 체크

MQTT


  • CMAKE_INSTALL_PREFIXC:\mostemp\mosquitto-1.4.14 로 변경

MQTT


  • Configure, Generate를 눌러 확인후 Open Project 를 클릭하여 프로젝트를 연다

MQTT


여기서부터 사진과 같이 6개의 프로젝트를 모두 선택한 후 속성으로 들어가서 사진과 같이 구성을 모든 구성으로 맞춰주세요. 6개 프로젝트의 Debug 모드와 Release 모드 설정을 한꺼번에 하기 위함입니다.


Visual Studio Configuration

  • vc++ 디렉터리->포함 디렉터리
    C:\libtemp\libwebsockets-2.4.1\build
    C:\libtemp\libwebsockets-2.4.1\lib
    두개의 경로를 추가
    헤더 파일을 읽을 수 있게 해줌

MQTT


  • vc++ 디렉터리->라이브러리 디렉터리
    C:\libtemp\libwebsockets-2.4.1\build\lib\Release
    하나의 경로를 추가

MQTT


  • c/c++ -> 일반 -> 추가 포함 디렉터리
    C:\libtemp\libwebsockets-2.4.1\build
    C:\libtemp\libwebsockets-2.4.1\lib
    두개의 경로를 추가

MQTT


  • mosquitto 프로젝트->c/c++ -> 전처리기 WITH_TLS , WITH_TLS_PSK 제거 (컴파일 오류를 막기위해)

MQTT


  • C:\mostemp\mosquitto-1.4.14config.h 의 15행 을 주석처리

MQTT


  • C:\pthreads\Pre-built.2\include 경로의 pthread.h 의 320~323라인 주석처리

MQTT


  • 먼저 Release 모드로 ALL_BUILD를 빌드


  • 사진과 같은 오류가 난다면

MQTT


  • mosquitto_passwd 프로젝트 -> 링커 -> 입력 optimized.lib 제거 및 debug.lib 제거

MQTT


  • 만약 libeay32.dll 이나 ssleay32.dll 파일이 없다고 오류가 난다면 해당 프로젝트의 build\src\Release에 해당 dll 파일을 넣어준다.

MQTT


  • Release 된 mosquitto broker 와 client 를 확인 (.exe 파일)
    C:\mostemp\mosquitto-1.4.14\build\src\Release
    C:\mostemp\mosquitto-1.4.14\build\client\Release


클라이언트의 .dll 파일 환경 변수 PATH 설정을 위한 과정입니다. 그림과 같이 Pub Client와 Sub Client를 한꺼번에 선택한 후 작업을 진행해 주세요.

  • 구성 속성 -> 디버깅 -> 환경 -> 편집
    PATH=C:\pthreads\Pre-built.2\dll\x86;C:\pthreads\Pre-built.2\lib\x86;C:\mostemp\mosquitto-1.4.14\build\lib\Debug;C:\libtemp\libwebsockets-2.4.1\build\bin\Release
    mosquitto의 dll 파일과 libwebsocket의 dll 파일 그리고 혹시 사용할 pthread의 dll 파일의 환경 변수 PATH 설정을 해준다.

MQTT


확인

  • 이제 Debug 모드로 Visual Studio에서 Debugging를 진행한다.

MQTT



참고

  • https://github.com/bapowell/bapowell.github.io/wiki/Mosquitto-Build-Notes-(Windows—Visual-Studio)