Skip to content

Instantly share code, notes, and snippets.

@souljaboy764
Created September 8, 2022 15:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save souljaboy764/beadea15ecaf9a2cde18420e1da04871 to your computer and use it in GitHub Desktop.
Save souljaboy764/beadea15ecaf9a2cde18420e1da04871 to your computer and use it in GitHub Desktop.
Updated CMakeLists.txt after copying the source files of libqi (modified) for Ubuntu 22.04 with Boost 1.74 (and 1.77) on ROS2 Humble
## Copyright (c) 2012, 2013, 2014 Aldebaran Robotics. All rights reserved.
## Use of this source code is governed by a BSD-style license that can be
## found in the COPYING file.
cmake_minimum_required(VERSION 3.5)
project(naoqi_libqi)
find_package(ament_cmake REQUIRED)
find_package(OpenSSL REQUIRED)
include(CheckSymbolExists)
check_symbol_exists(_SC_HOST_NAME_MAX "unistd.h" HAVE_SC_HOST_NAME_MAX)
set_source_files_properties(src/os_posix.cpp
PROPERTIES
COMPILE_DEFINITIONS HAVE_SC_HOST_NAME_MAX)
# We always want boost filesystem v3
add_definitions("-DBOOST_FILESYSTEM_VERSION=3")
add_definitions("-DBOOST_ASIO_DISABLE_STD_CHRONO")
if(MSVC)
add_definitions(" -DWIN32_LEAN_AND_MEAN -DNOMINMAX")
endif()
if (WIN32)
add_definitions(" -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DWIN32_LEAN_AND_MEAN -DNOMINMAX")
endif()
if (UNIX)
add_definitions(" -fno-strict-aliasing ")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
endif()
# Remove this line to use QT if usable
set(WITH_QT5_CORE OFF)
if(WITH_BOOST_LOCALE)
add_definitions(" -DWITH_BOOST_LOCALE ")
endif()
enable_testing()
include(CMakeDependentOption)
if (WITH_PROBES)
find_package(qiprobes)
qiprobes_create_probe(tp_qi
src/tp_qi.in.h
PROVIDER_NAME qi_qi)
qiprobes_instrument_files(tp_qi
src/eventloop.cpp)
set(_tp_qi "tp_qi")
else()
set(_tp_qi "")
endif()
set(QI_H qi/detail/async.hxx
qi/detail/clock.hxx
qi/detail/eventloop.hxx
qi/detail/future.hxx
qi/detail/future_fwd.hpp
qi/detail/futurebarrier.hpp
qi/detail/futureunwrap.hpp
qi/detail/executioncontext.hpp
qi/detail/log.hxx
qi/detail/mpl.hpp
qi/detail/print.hpp
qi/detail/trackable.hxx
qi/api.hpp
qi/application.hpp
qi/actor.hpp
qi/async.hpp
qi/atomic.hpp
qi/buffer.hpp
qi/clock.hpp
qi/either.hpp
qi/flags.hpp
qi/future.hpp
qi/futuregroup.hpp
qi/log/consoleloghandler.hpp
qi/log/csvloghandler.hpp
qi/log/fileloghandler.hpp
qi/log/headfileloghandler.hpp
qi/log/tailfileloghandler.hpp
qi/log.hpp
qi/macro.hpp
qi/numeric.hpp
qi/os.hpp
qi/getenv.hpp
qi/preproc.hpp
qi/qi.hpp
qi/types.hpp
qi/path.hpp
qi/path_conf.hpp
qi/periodictask.hpp
qi/stats.hpp
qi/trackable.hpp
qi/translator.hpp
qi/eventloop.hpp
qi/version.hpp
qi/iocolor.hpp
qi/strand.hpp
qi/assert.hpp
qi/ptruid.hpp
qi/objectuid.hpp
qi/tag.hpp
qi/uuid.hpp)
set(QI_C src/dlfcn.cpp
src/path.cpp
src/application.cpp
src/application_p.hpp
src/buffer.cpp
src/buffer_p.hpp
src/bufferreader.cpp
src/clock.cpp
src/sdklayout.hpp
src/future.cpp
src/log.cpp
src/log_p.hpp
src/consoleloghandler.cpp
src/fileloghandler.cpp
src/csvloghandler.cpp
src/headfileloghandler.cpp
src/tailfileloghandler.cpp
src/locale-light.cpp
src/os.cpp
src/path_conf.cpp
src/periodictask.cpp
src/print.cpp
src/utils.hpp
src/utils.cpp
src/eventloop.cpp
src/eventloop_p.hpp
src/sdklayout-boost.cpp
src/version.cpp
src/iocolor.cpp
src/strand.cpp
src/ptruid.cpp)
set(QITYPE_H qi/anyfunction.hpp
qi/anyobject.hpp
qi/signature.hpp
qi/property.hpp
qi/signal.hpp
qi/signalspy.hpp
qi/anyvalue.hpp
qi/anymodule.hpp
qi/type/detail/signal.hxx
qi/type/detail/property.hxx
qi/type/detail/accessor.hxx
qi/type/detail/anyreference.hpp
qi/type/detail/anyreference.hxx
qi/type/detail/anyvalue.hpp
qi/type/detail/anyvalue.hxx
qi/type/detail/anyfunction.hxx
qi/type/detail/anyfunctionfactory.hxx
qi/type/detail/anyiterator.hpp
qi/type/detail/anyiterator.hxx
qi/type/detail/bindtype.hxx
qi/type/detail/functionsignature.hxx
qi/type/detail/futureadapter.hxx
qi/type/detail/futureadapter.hpp
qi/type/detail/dynamicobjectbuilder.hxx
qi/type/detail/genericobject.hpp
qi/type/detail/object.hxx
qi/type/detail/proxyregister.hpp
qi/type/detail/hasless.hxx
qi/type/detail/objecttypebuilder.hxx
qi/type/detail/type.hxx
qi/type/detail/buffertypeinterface.hxx
qi/type/detail/typedispatcher.hxx
qi/type/detail/dynamictypeinterface.hxx
qi/type/detail/typeimpl.hxx
qi/type/detail/typeinterface.hpp
qi/type/detail/inttypeinterface.hxx
qi/type/detail/listtypeinterface.hxx
qi/type/detail/maptypeinterface.hxx
qi/type/detail/optionaltypeinterface.hxx
qi/type/detail/pointertypeinterface.hxx
qi/type/detail/staticobjecttype.hpp
qi/type/detail/stringtypeinterface.hxx
qi/type/detail/structtypeinterface.hxx
qi/type/detail/type.hpp
qi/type/detail/manageable.hpp
qi/type/detail/traceanalyzer.hpp
qi/api.hpp
qi/binarycodec.hpp
qi/type/dynamicobject.hpp
qi/type/dynamicobjectbuilder.hpp
qi/type/fwd.hpp
qi/jsoncodec.hpp
qi/type/metamethod.hpp
qi/type/metaobject.hpp
qi/type/metaproperty.hpp
qi/type/metasignal.hpp
qi/type/objecttypebuilder.hpp
qi/type/proxyproperty.hpp
qi/type/proxysignal.hpp
qi/type/typeinterface.hpp
qi/type/typeobject.hpp
qi/type/typedispatcher.hpp)
set(QITYPE_C src/type/binarycodec.cpp
src/type/binarycodec_p.hpp
src/type/dynamicobject.cpp
src/type/dynamicobjectbuilder.cpp
src/type/anyfunction.cpp
src/type/anyreference.cpp
src/type/anyvalue.cpp
src/type/anyobject.cpp
src/type/genericobject.cpp
src/type/jsoncodec_p.hpp
src/type/jsondecoder.cpp
src/type/jsonencoder.cpp
src/type/manageable.cpp
src/type/metamethod.cpp
src/type/metaproperty.cpp
src/type/metasignal.cpp
src/type/metasignal_p.cpp
src/type/metasignal_p.hpp
src/type/metaobject.cpp
src/type/metaobject_p.hpp
src/type/anymodule.cpp
src/type/objecttypebuilder.cpp
src/type/signal.cpp
src/type/signal_p.hpp
src/type/signalspy.cpp
src/type/signatureconvertor.cpp
src/type/signatureconvertor.hpp
src/type/staticobjecttype.cpp
src/type/typeinterface.cpp
src/type/structtypeinterface.cpp
src/type/type.cpp
src/type/signature.cpp
src/type/traceanalyzer.cpp
)
set(QIM_H qi/api.hpp
qi/messaging/authprovider.hpp
qi/messaging/authproviderfactory.hpp
qi/messaging/autoservice.hpp
qi/messaging/clientauthenticator.hpp
qi/messaging/clientauthenticatorfactory.hpp
qi/messaging/detail/autoservice.hxx
qi/messaging/gateway.hpp
qi/messaging/messagesocket_fwd.hpp
qi/messaging/servicedirectoryproxy.hpp
qi/messaging/serviceinfo.hpp
qi/messaging/ssl/detail/ssl.hxx
qi/messaging/ssl/ssl.hpp
qi/messaging/tcpscheme.hpp
qi/applicationsession.hpp
qi/session.hpp
qi/uri.hpp
qi/url.hpp
)
set(QIM_C
src/messaging/applicationsession_internal.hpp
src/messaging/applicationsession_internal.cpp
src/messaging/applicationsession.cpp
src/messaging/authprovider_p.hpp
src/messaging/authprovider.cpp
src/messaging/boundobject.cpp
src/messaging/boundobject.hpp
src/messaging/clientauthenticator_p.hpp
src/messaging/clientauthenticator.cpp
src/messaging/message.hpp
src/messaging/message.cpp
src/messaging/messagedispatcher.hpp
src/messaging/messagedispatcher.cpp
src/messaging/objecthost.hpp
src/messaging/objecthost.cpp
src/messaging/objectregistrar.hpp
src/messaging/objectregistrar.cpp
src/messaging/remoteobject.cpp
src/messaging/remoteobject_p.hpp
src/messaging/servicedirectory.cpp
src/messaging/servicedirectory.hpp
src/messaging/servicedirectoryclient.hpp
src/messaging/servicedirectoryclient.cpp
src/messaging/servicedirectoryproxy.cpp
src/messaging/serviceinfo.cpp
src/messaging/session.cpp
src/messaging/session_p.hpp
src/messaging/sessionservice.hpp
src/messaging/sessionservice.cpp
src/messaging/sessionservices.hpp
src/messaging/sessionservices.cpp
src/messaging/server.hpp
src/messaging/server.cpp
src/messaging/ssl/ssl.cpp
src/messaging/streamcontext.hpp
src/messaging/streamcontext.cpp
src/messaging/transportserver.hpp
src/messaging/transportserver.cpp
src/messaging/transportserverasio_p.cpp
src/messaging/transportserverasio_p.hpp
src/messaging/messagesocket.hpp
src/messaging/messagesocket.cpp
src/messaging/transportsocketcache.cpp
src/messaging/transportsocketcache.hpp
src/messaging/tcpmessagesocket.cpp
src/messaging/tcpmessagesocket.hpp
src/messaging/tcpscheme.cpp
src/messaging/uri.cpp
src/messaging/url.cpp
src/registration.cpp
)
set(QI_SOCKET_H
src/messaging/sock/accept.hpp
src/messaging/sock/common.hpp
src/messaging/sock/concept.hpp
src/messaging/sock/connect.hpp
src/messaging/sock/connectedstate.hpp
src/messaging/sock/connectingstate.hpp
src/messaging/sock/disconnectedstate.hpp
src/messaging/sock/disconnectingstate.hpp
src/messaging/sock/error.hpp
src/messaging/sock/macrolog.hpp
src/messaging/sock/socketptr.hpp
src/messaging/sock/sslcontextptr.hpp
src/messaging/sock/socketwithcontext.hpp
src/messaging/sock/networkasio.hpp
src/messaging/sock/option.hpp
src/messaging/sock/receive.hpp
src/messaging/sock/resolve.hpp
src/messaging/sock/send.hpp
src/messaging/sock/traits.hpp
)
set(QI_SOCKET_C
src/messaging/sock/networkasio.cpp
)
set(QIPERF_H
qi/perf/dataperfsuite.hpp
qi/perf/detail/dataperfsuite.hxx
qi/perf/dataperf.hpp
qi/perf/measure.hpp
)
set(QIPERF_C
src/perf/dataperfsuite_p.hpp
src/perf/dataperf_p.hpp
src/perf/dataperfsuite.cpp
src/perf/dataperf.cpp
src/perf/measure.cpp
)
set(KA_H
ka/algorithm.hpp
ka/base64.hpp
ka/ark/inputiter.hpp
ka/ark/mutable.hpp
ka/concept.hpp
ka/conceptpredicate.hpp
ka/empty.hpp
ka/errorhandling.hpp
ka/flatten.hpp
ka/functional.hpp
ka/functor.hpp
ka/functorcontainer.hpp
ka/indexed.hpp
ka/integersequence.hpp
ka/iterator.hpp
ka/macro.hpp
ka/macroregular.hpp
ka/memory.hpp
ka/moveoncopy.hpp
ka/mutablestore.hpp
ka/mutex.hpp
ka/opt.hpp
ka/productiter.hpp
ka/range.hpp
ka/relationpredicate.hpp
ka/scoped.hpp
ka/sha1.hpp
ka/src.hpp
ka/testutils.hpp
ka/typetraits.hpp
ka/unit.hpp
ka/uri.hpp
ka/uri/io.hpp
ka/uri/uri_fwd.hpp
ka/uri/uri.hpp
ka/uri/parsing.hpp
ka/utility.hpp
)
configure_file(qi/config.hpp.in ${CMAKE_INSTALL_PREFIX}/include/qi/config.hpp)
include_directories(${CMAKE_INSTALL_PREFIX}/include)
if(WITH_BOOST_LOCALE)
list(APPEND QI_H qi/translator.hpp)
list(APPEND QI_C src/translator.cpp)
endif()
install(DIRECTORY qi ka DESTINATION include)
install(FILES ${CMAKE_INSTALL_PREFIX}/include/qi/config.hpp DESTINATION include/qi)
if (WIN32)
list(APPEND QI_C
src/os_launch_win32.cpp
src/os_win32.cpp
src/os_debugger_win32.cpp)
else()
list(APPEND QI_C
src/os_posix.cpp
src/os_debugger_posix.cpp)
if(ANDROID)
list(APPEND QI_C src/os_launch_android.cpp)
else()
list(APPEND QI_C src/os_launch_posix.cpp)
endif()
endif()
#normalize BUILD_SHARED_LIBS, default ON
if (NOT DEFINED BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS ON)
endif()
# Set qi_STATIC_BUILD used in config.hpp.in
set(qi_STATIC_BUILD OFF)
if (NOT BUILD_SHARED_LIBS) #lol
set(qi_STATIC_BUILD ON)
endif()
# Convert ON/OFF to SHARED/STATIC for create_lib argument
set(_qilibtype)
if (BUILD_SHARED_LIBS OR ANDROID)
set(_qilibtype SHARED)
else()
set(_qilibtype STATIC)
endif()
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
add_library(qi SHARED
${QI_H} ${QI_C}
${QITYPE_H} ${QITYPE_C}
${QIM_H} ${QIM_C}
${QI_SOCKET_H}
${KA_H})
find_package(Boost QUIET COMPONENTS chrono filesystem program_options regex system thread random)
target_link_libraries(qi ${Boost_LIBRARIES} OpenSSL::Crypto OpenSSL::SSL)
if (WITH_QT5_CORE)
qi_use_lib(qi QT5_CORE)
endif()
if(WITH_BOOST_LOCALE)
qi_use_lib(qi BOOST_LOCALE)
endif()
if (UNIX)
target_link_libraries(qi pthread)
endif()
if(ANDROID)
target_link_libraries(qi log)
endif()
if(UNIX AND NOT APPLE AND NOT ANDROID)
target_link_libraries(qi dl rt)
endif()
if(WIN32)
qi_use_lib(qi WSOCK IPHLPAPI PSAPI WSA) #Really?
endif()
install(TARGETS qi DESTINATION lib)
install(FILES package.xml DESTINATION share/${PROJECT_NAME})
ament_export_include_directories(include)
ament_export_libraries(qi)
# ament_package(CONFIG_EXTRAS libqi-extras.cmake.em)
ament_package()
@souljaboy764
Copy link
Author

souljaboy764 commented Sep 8, 2022

For running ros-naoqi/libqi on Ubuntu 22.04 with ROS2 Humble:

  • Clone https://github.com/ros-naoqi/libqi (ros2 branch) to your ROS2 workspace.
  • Clone the repository https://github.com/souljaboy764/libqi to a temporary folder.
  • Move all the directories with source files from souljaboy764/libqi to ros-naoqi/libqi and ensure that they are overwritten.
  • Replace the contents of CMakeLists.txt file in ros-naoqi/libqi to the one above.
  • Run colcon build from the root of your ROS2 workspace.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment