micro-ROS / micro-ROS/micro_ros_setup
spdlog Cmake error when building firmware
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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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