Преобразуйте файл микропитона в cmakelist.txt

#c #makefile #cmake #cmakelists-options

Вопрос:

Я пытаюсь преобразовать файл макета micropython в cmakelists.txt от https://docs.micropython.org/en/latest/develop/porting.html

 # Include the core environment definitions; this will set $(TOP).
include ../../py/mkenv.mk

# Include py core make definitions.
include $(TOP)/py/py.mk

# Set CFLAGS and libraries.
CFLAGS = -I. -I$(BUILD) -I$(TOP)
LIBS = -lm
CROSS_COMPILE ?= arm-none-eabi-

# Define the required source files.
SRC_C = 
    main.c 
    mphalport.c 
    lib/mp-readline/readline.c 
    lib/utils/gchelper_generic.c 
    lib/utils/pyexec.c 
    lib/utils/stdout_helpers.c 

# Define the required object files.
OBJ = $(PY_CORE_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))

# Define the top-level target, the main firmware.
all: $(BUILD)/firmware.elf

# Define how to build the firmware.
$(BUILD)/firmware.elf: $(OBJ)
    $(ECHO) "LINK $@"
    $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
    $(Q)$(SIZE) $@

# Include remaining core make rules.
include $(TOP)/py/mkrules.mk
 

Текущий прогресс в cmakelists.txt

 cmake_minimum_required(VERSION 3.17)
set(CMAKE_CXX_STANDARD 14)

set(MICROPY_TARGET firmware)
set(MICROPY_DIR "../..")
set(MICROPY_PORT_DIR    ${CMAKE_CURRENT_SOURCE_DIR})

include(${MICROPY_DIR}/py/py.cmake)
project(${MICROPY_TARGET})

set(MICROPY_SOURCE_PORT
        ${MICROPY_PORT_DIR}/main.c
        ${MICROPY_PORT_DIR}/mphalport.c
        ${MICROPY_DIR}/lib/mp-readline/readline.c
        ${MICROPY_DIR}/lib/utils/gchelper_generic.c
        ${MICROPY_DIR}/lib/utils/pyexec.c
        ${MICROPY_DIR}/lib/utils/stdout_helpers.c
        )

target_sources(app PRIVATE
        ${MICROPY_SOURCE_PY}
        ${MICROPY_SOURCE_PORT}
        )

target_link_libraries(app PRIVATE ${MICROPY_TARGET})

include(${MICROPY_DIR}/py/mkrules.cmake)
 

Я получаю ошибку во время работы:

Ошибка CMake в строке 33 : не удается указать источники для целевого «приложения», которое не создано этим проектом.

Я принимаю помощь от этого: https://github.com/micropython/micropython/blob/master/ports/zephyr/CMakeLists.txt , но я думаю, что мне не хватает некоторых шагов.

Комментарии:

1. Вам не хватает add_excutable(app) (при условии, что вашей конечной целью является исполняемый файл — в противном случае требуется add_library или add_custom_target ).

2. @kaylum конечная цель — firmware.elf файл.