如何使用cmake构建Eclipse Paho

3

我很新于CMake。我想将Eclipse Paho添加到我的项目中,因此我使用了"ExternalProject_add"。下面是我的CMakeLists.txt文件的一部分:

ExternalProject_add( 
libressl
URL ${CMAKE_SOURCE_DIR}/externals/libressl-2.5.0.tar.gz
CONFIGURE_COMMAND ./configure --disable-hardening --prefix=${CMAKE_BINARY_DIR}
BUILD_IN_SOURCE 1)

ExternalProject_add( 
paho
DEPENDS libressl
URL ${CMAKE_SOURCE_DIR}/externals/eclipse-paho-mqtt-c-src-1.1.0.tar.gz
CMAKE_ARGS -DPAHO_WITH_SSL -DOPENSSL_INC_SEARCH_PATH=${CMAKE_SOURCE_DIR}/include -DOPENSSL_LIB_SEARCH_PATH=${CMAKE_SOURCE_DIR}/lib
BUILD_COMMAND make
BUILD_IN_SOURCE 1)

事实上,LibreSSL 构建正常。正如您所看到的,它使用 autoconf 工具。

我的问题是,paho 在“配置步骤”时抛出了一个错误。

 ~/projects/cmake_test/CL_Test/build$ cmake ..
 -- Configuring done
 -- Generating done
 -- Build files have been written to: /projects/cmake_test/CL_Test/build
 :~/projects/cmake_test/CL_Test/build$ make
 [ 50%] Built target libressl
 [ 56%] Performing configure step for 'paho'
 CMake Error at /projects/cmake_test/CL_Test/build/paho-prefix/src/paho-stamp/paho-configure-.cmake:16 (message):
 Command failed: 1

 '/usr/bin/cmake' '-DPAHO_WITH_SSL' '-DOPENSSL_INC_SEARCH_PATH=/home/hbaumann/projects/cmake_test/CL_Test/include' '-DOPENSSL_LIB_SEARCH_PATH=/home/hbaumann/projects/cmake_test/CL_Test/lib' '-GUnix Makefiles' '/projects/cmake_test/CL_Test/build/paho-prefix/src/paho'

 CMakeFiles/paho.dir/build.make:107: recipe for target 'paho-prefix/src/paho-stamp/paho-configure' failed
 make[2]: *** [paho-prefix/src/paho-stamp/paho-configure] Error 1
 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/paho.dir/all' failed
 make[1]: *** [CMakeFiles/paho.dir/all] Error 2
 Makefile:83: recipe for target 'all' failed
 make: *** [all] Error 2

我认为,由于paho默认使用CMake构建,所以我真的没有什么需要添加的。你可以看到,我的CMake知识非常有限。
让我感到困惑的是,在paho tar-ball中,只有一个Makefile在主文件夹中,而没有CMakeLists.txt。
我错过了什么...是否需要设置特殊的configure命令?
提前感谢。

我认为,由于paho默认使用CMake构建,你是怎么知道的?看看这里的说明(http://www.eclipse.org/paho/clients/cpp/),我不这么认为,而且你已经发现你只有一个Makefile,没有CMakeLists.txt。 - Antonio
是的,这让我很困扰...我注意到我没有删除所有包含我的本地用户名的路径/目录条目...这是我的错 :( 我还尝试更改我的个人资料中的显示名称,但它说我要在30天后才能这样做。 - Heiko
我不记得在哪里读到“paho默认使用cmake构建”了...可能是我的错误。我注意到git仓库的结构与tar包有些不同,在主目录中有一个CMakeLists.txt文件。 - Heiko
啊,好的,那可能是他们正在切换构建系统。 - Antonio
1个回答

2

您可以使用GIT存储库,它有一个CMakeList.txt文件。

ExternalProject_add(
paho
DEPENDS libressl
GIT_REPOSITORY "https://github.com/eclipse/paho.mqtt.c.git"
GIT_TAG "master"
UPDATE_COMMAND ""
PATCH_COMMAND ""
SOURCE_DIR "${CMAKE_BINARY_DIR}/paho_sourcedir"
CMAKE_ARGS -DPAHO_WITH_SSL=TRUE -DOPENSSL_INC_SEARCH_PATH=${CMAKE_BINARY_DIR}/include -DOPENSSL_LIB_SEARCH_PATH=${CMAKE_BINARY_DIR}/lib -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/paho_prefix
)

谢谢!这对我有用!就像我已经告诉安东尼的那样,tar-ball的结构与git-repo不同。感谢您的帮助。 - Heiko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接