micro-ROS / micro-ROS/micro_ros_setup

spdlog Cmake error when building firmware

Offen
#768 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Shell
Sterne
509
Forks
183
Ø Merge
22 Std. 26 Min.
Gemergte PRs (30 T.)
7

Beschreibung

Issue template

  • Hardware description: microblaze
  • RTOS: FreeRTOS
  • Installation type: micro_ros_setup
  • Version or commit hash: humble

I am trying to compile a custom static library for the Microblaze processor using the command:
ros2 run micro_ros_setup create_firmware_ws.sh generate_lib

I am using the following cmake file:

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_C_COMPILER mb-gcc)
set(CMAKE_CXX_COMPILER mb-g++)

set(CMAKE_C_COMPILER_WORKS 1 CACHE INTERNAL "")
set(CMAKE_CXX_COMPILER_WORKS 1 CACHE INTERNAL "")

set(INCLUDE_PATH_FREERTOS "/home/niko/vitis_ws/microblaze_freeRTOS/microblaze_0/freertos10_xilinx_domain/bsp/microblaze_0/include")
set(FLAGS "-O2 -ffunction-sections -fdata-sections -fno-exceptions -nostdlib --param max-inline-insns-single=500 -DF_CPU=100000000L -I'${INCLUDE_PATH_FREERTOS}' -D'RCUTILS_LOG_MIN_SEVERITY=RCUTILS_LOG_MIN_SEVERITY_NONE' -D'PLATFORM_NAME_FREERTOS'" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_INIT "-std=c11 ${FLAGS} -DCLOCK_MONOTONIC=0 -D'__attribute__(x)='" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_INIT "-std=c++11 ${FLAGS} -fno-rtti -DCLOCK_MONOTONIC=0 -D'__attribute__(x)='" CACHE STRING "" FORCE)

This is the .meta file:

{
    "names": {
        "tracetools": {
            "cmake-args": [
                "-DTRACETOOLS_DISABLED=ON",
                "-DTRACETOOLS_STATUS_CHECKING_TOOL=OFF"
            ]
        },
        "rosidl_typesupport": {
            "cmake-args": [
                "-DROSIDL_TYPESUPPORT_SINGLE_TYPESUPPORT=ON"
            ]
        },
        "rcl": {
            "cmake-args": [
                "-DBUILD_TESTING=OFF",
                "-DRCL_COMMAND_LINE_ENABLED=OFF",
                "-DRCL_LOGGING_ENABLED=ON"
            ]
        }, 
        "rcutils": {
            "cmake-args": [
                "-DENABLE_TESTING=OFF",
                "-DRCUTILS_NO_FILESYSTEM=ON",
                "-DRCUTILS_NO_THREAD_SUPPORT=ON",
                "-DRCUTILS_NO_64_ATOMIC=ON",
                "-DRCUTILS_AVOID_DYNAMIC_ALLOCATION=ON"
            ]
        },
        "microxrcedds_client": {
            "cmake-args": [
                "-DUCLIENT_PIC=OFF",
                "-DUCLIENT_PROFILE_UDP=OFF",
                "-DUCLIENT_PROFILE_TCP=OFF",
                "-DUCLIENT_PROFILE_DISCOVERY=OFF",
                "-DUCLIENT_PROFILE_SERIAL=OFF",
                "-UCLIENT_PROFILE_STREAM_FRAMING=ON",
                "-DUCLIENT_PROFILE_CUSTOM_TRANSPORT=ON",
                "-DUCLIENT_MAX_SESSION_CONNECTION_ATTEMPTS=10",
                "-DUCLIENT_MIN_SESSION_CONNECTION_INTERVAL=1000000"
            ]
        },
        "rmw_microxrcedds": {
            "cmake-args": [
                "-DRMW_UXRCE_MAX_NODES=5",
                "-DRMW_UXRCE_MAX_PUBLISHERS=5",
                "-DRMW_UXRCE_MAX_SUBSCRIPTIONS=5",
                "-DRMW_UXRCE_MAX_SERVICES=1",
                "-DRMW_UXRCE_MAX_CLIENTS=1",
                "-DRMW_UXRCE_MAX_HISTORY=4",
                "-DRMW_UXRCE_TRANSPORT=custom"
            ]
        }
    }
}

However, when executing the command to build the firmware, I get the following error for the spdlog:

ros2 run micro_ros_setup build_firmware.sh $(pwd)/my_custom_toolchain.cmake $(pwd)/my_custom_colcon.meta

CMake Error at cmake/get_default_rcl_logging_implementation.cmake:43 (find_package):
  By not providing "Findrcl_logging_spdlog.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "rcl_logging_spdlog", but CMake did not find one.

  Could not find a package configuration file provided by
  "rcl_logging_spdlog" with any of the following names:

    rcl_logging_spdlogConfig.cmake
    rcl_logging_spdlog-config.cmake

  Add the installation prefix of "rcl_logging_spdlog" to CMAKE_PREFIX_PATH or
  set "rcl_logging_spdlog_DIR" to a directory containing one of the above
  files.  If "rcl_logging_spdlog" provides a separate development package or
  SDK, be sure it has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:27 (get_default_rcl_logging_implementation)

I already checked the installation of the spdlog library.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit cmake/get_default_rcl_logging_implementation.cmake und dem Aufruf von build_firmware.sh und untersuche anschließend, wie die bereitgestellte Toolchain und die .meta-Dateien die Paketsuche konfigurieren. Führe den Firmware-Build erneut aus und überprüfe, dass rcl_logging_spdlog gefunden wird und der Befehl ohne den gemeldeten CMake-Fehler abgeschlossen wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cmake, shell
Bereich
build-system, embedded-iot
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.