posted on

Treebeard steht zum Download bereit

In den letzten Jahren habe ich meine eigene CMake Generator „Treebeard“ wird verwendet, um größere Mengen an Dateien in einer CMake-Bibliothek oder einem CMake-Projekt zu platzieren. Das Tool wurde mittlerweile getestet und ist fehlerfrei einsetzbar. Deshalb biete ich es jetzt hier an. Es kann für bis zu 20 Dateien kostenlos genutzt werden, darüber hinaus ist für die Nutzung eine angemessene Lizenz erforderlich.

CMake ist ein fantastisches Projekttool und kann kostenlos verwendet werden! Für den Softwareentwickler bietet es eine Reihe großer Vorteile:

  • CMake ist plattformunabhängig.
  • CMake kann für Desktop- oder eingebettete Software verwendet werden.
  • CMake ermöglicht eine modulare Softwareentwicklung, bei der Module unabhängig definiert werden, die in verschiedenen Projekten verwendet werden können.

Treebeard ist ein Tool, das die Verwendung von CMake einfacher macht. Es ist kein Ersatz für CMake und Kenntnisse der CMake-Befehle und der Sprachstruktur sind weiterhin erforderlich.

Beim Import externer Module stößt der Entwickler manchmal auf die Tatsache, dass die manuelle Konfiguration aller Pfade in CMake eine schwierige Angelegenheit ist. Es nimmt viel Zeit in Anspruch, eine CMakeLists.txt-Datei so zu schreiben, dass alle Quelldateien und Include-Pfade fehlerfrei verwendet werden können.

Nehmen Sie das folgende Beispiel. Passen Sie das an den Entwickler an STMicroelectronics Sie möchten den STM32L4-HAL-Treiber zu einem CMake-Projekt hinzufügen. Nach dem Herunterladen des Treibers von ST ist die folgende Ordnerstruktur sichtbar:

Der Treiber enthält insgesamt 238 Dateien. Wie können diese Dateien einfach als CMake-Bibliothek hinzugefügt werden? CMake bietet die Option einer „Wildcard“ an, diese Option ist jedoch nicht zu empfehlen! Es ist klüger, alle Dateien manuell zu benennen, als Grundlage für den Befehl „add_library …“.

Treebeard macht es einfach. Boombaard kann eine Verzeichnisstruktur basierend auf einigen ausgewählten Dateien, als ganzes Verzeichnis oder als Verzeichnis rekursiv importieren – es übernimmt dann alles, was sich im Verzeichnis befindet. Boombaard bietet die Möglichkeit, nach Dateityp zu filtern und bestimmte Dateitypen zu blockieren.

Die generierte CMakeLists.txt-Datei sieht dann folgendermaßen aus:

## Boombaard gegenereerd CMakelists add_library bestand
## Bestand gegenereerd op : 2020-09-14 10:58:53.
## (c)2001-2018 Copyright Kiwanda Embedded Systemen

set(LibNaam STM32L4xx_HAL_Driver)

# Het absolute pad voor dit bestand “CMakeLists.txt” is “HALLibraries/STM32Cube/Repository/STM32Cube_FW_L4_V1.16.0/Drivers/STM32L4xx_HAL_Driver/“ 

## Definieer de minimale cmake versie.
cmake_minimum_required(VERSION 2.8.10)


## GemPath is een gemeenschappelijk pad dat gevonden wordt onder de bron, inclusief en bibliotheek paden.
set(GemPath0 ${CMAKE_CURRENT_SOURCE_DIR}/Inc)
set(GemPath1 ${GemPath0}/Legacy)
set(GemPath2 ${CMAKE_CURRENT_SOURCE_DIR}/Src)
set(GemPath3 ${GemPath2}/Legacy)



## SourcePath is een gemeenschappelijk pad voor de bronbestanden.
set(SourcePath0 ${GemPath3})
set(SourcePath1 ${GemPath2})
set(SourcePath2 ${GemPath1})
set(SourcePath3 ${GemPath0})



## Dit gedeelte geeft de include directories voor de bronbestanden aan.
set(AlleIncludeDirs ${SourcePath2} ${SourcePath3} )
include_directories(${AlleIncludeDirs})


## Geef een lijst van alle bronbestanden met de juiste paden.
set(SRCS0 stm32l4xx_hal_can.c )
set(Addition0Path ${SourcePath0})
foreach(FN ${SRCS0})
	list(APPEND SRCS ${Addition0Path}/${FN})
endforeach(FN)

set(SRCS1 stm32l4xx_hal_adc_ex.c stm32l4xx_hal_adc.c stm32l4xx_hal_can.c stm32l4xx_hal_comp.c stm32l4xx_hal_cortex.c 
	stm32l4xx_hal_crc_ex.c stm32l4xx_hal_crc.c stm32l4xx_hal_cryp_ex.c stm32l4xx_hal_cryp.c stm32l4xx_hal_dac_ex.c 
	stm32l4xx_hal_dac.c stm32l4xx_hal_dcmi.c stm32l4xx_hal_dfsdm_ex.c stm32l4xx_hal_dfsdm.c stm32l4xx_hal_dma_ex.c 
	stm32l4xx_hal_dma.c stm32l4xx_hal_dma2d.c stm32l4xx_hal_dsi.c stm32l4xx_hal_exti.c stm32l4xx_hal_firewall.c 
	stm32l4xx_hal_flash_ex.c stm32l4xx_hal_flash_ramfunc.c stm32l4xx_hal_flash.c stm32l4xx_hal_gfxmmu.c stm32l4xx_hal_gpio.c 
	stm32l4xx_hal_hash_ex.c stm32l4xx_hal_hash.c stm32l4xx_hal_hcd.c stm32l4xx_hal_i2c_ex.c stm32l4xx_hal_i2c.c 
	stm32l4xx_hal_irda.c stm32l4xx_hal_iwdg.c stm32l4xx_hal_lcd.c stm32l4xx_hal_lptim.c stm32l4xx_hal_ltdc_ex.c 
	stm32l4xx_hal_ltdc.c stm32l4xx_hal_mmc_ex.c stm32l4xx_hal_mmc.c stm32l4xx_hal_nand.c stm32l4xx_hal_nor.c 
	stm32l4xx_hal_opamp_ex.c stm32l4xx_hal_opamp.c stm32l4xx_hal_ospi.c stm32l4xx_hal_pcd_ex.c stm32l4xx_hal_pcd.c 
	stm32l4xx_hal_pka.c stm32l4xx_hal_pssi.c stm32l4xx_hal_pwr_ex.c stm32l4xx_hal_pwr.c stm32l4xx_hal_qspi.c 
	stm32l4xx_hal_rcc_ex.c stm32l4xx_hal_rcc.c stm32l4xx_hal_rng_ex.c stm32l4xx_hal_rng.c stm32l4xx_hal_rtc_ex.c 
	stm32l4xx_hal_rtc.c stm32l4xx_hal_sai_ex.c stm32l4xx_hal_sai.c stm32l4xx_hal_sd_ex.c stm32l4xx_hal_sd.c 
	stm32l4xx_hal_smartcard_ex.c stm32l4xx_hal_smartcard.c stm32l4xx_hal_smbus.c stm32l4xx_hal_spi_ex.c stm32l4xx_hal_spi.c 
	stm32l4xx_hal_sram.c stm32l4xx_hal_swpmi.c stm32l4xx_hal_tim_ex.c stm32l4xx_hal_tim.c stm32l4xx_hal_tsc.c 
	stm32l4xx_hal_uart_ex.c stm32l4xx_hal_uart.c stm32l4xx_hal_usart_ex.c stm32l4xx_hal_usart.c stm32l4xx_hal_wwdg.c 
	stm32l4xx_hal.c stm32l4xx_ll_adc.c stm32l4xx_ll_comp.c stm32l4xx_ll_crc.c stm32l4xx_ll_crs.c stm32l4xx_ll_dac.c 
	stm32l4xx_ll_dma.c stm32l4xx_ll_dma2d.c stm32l4xx_ll_exti.c stm32l4xx_ll_fmc.c stm32l4xx_ll_gpio.c stm32l4xx_ll_i2c.c 
	stm32l4xx_ll_lptim.c stm32l4xx_ll_lpuart.c stm32l4xx_ll_opamp.c stm32l4xx_ll_pka.c stm32l4xx_ll_pwr.c 
	stm32l4xx_ll_rcc.c stm32l4xx_ll_rng.c stm32l4xx_ll_rtc.c stm32l4xx_ll_sdmmc.c stm32l4xx_ll_spi.c stm32l4xx_ll_swpmi.c 
	stm32l4xx_ll_tim.c stm32l4xx_ll_usart.c stm32l4xx_ll_usb.c stm32l4xx_ll_utils.c )
set(Addition1Path ${SourcePath1})
foreach(FN ${SRCS1})
	list(APPEND SRCS ${Addition1Path}/${FN})
endforeach(FN)


list(SORT SRCS)

add_library(${LibNaam} STATIC ${SRCS})

Diese Bibliothek kann jetzt einfach zu einem CMake-Projekt hinzugefügt werden:

leer

Neben Bibliotheksdateien kann Boombaard auch andere CMake-Dateien generieren:

  • Projektdateien zum Generieren einer Desktop-Anwendung.
  • Include-Dateien, die mit dem CMake-Befehl „include“ verwendet werden sollen.

Boombaard kann für Mac OS X, MS Windows oder Ubuntu Linux heruntergeladen werden. Die App ist mehrsprachig (Niederländisch, Deutsch oder Englisch) und kann unter Downloads gefunden werden: