# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the # toolchain file and module path of the fxSDK cmake_minimum_required(VERSION 3.18) # replace this with your project's name project(Windmill) include(GenerateG1A) include(GenerateG3A) include(Fxconv) find_package(Gint 2.1 REQUIRED) # include directories, put your .h files in those folders include_directories(include) # source files set(SOURCES src/main.cpp # ... ) # shared assets set(ASSETS # ... ) # fx-9860G-only assets (monochrome) set(ASSETS_fx assets-fx/example.png assets-fx/img/windmill.png # ... ) # fx-CG-50-only assets (polychrome) set(ASSETS_cg assets-cg/example.png # ... ) # Compile flags set(FLAGS # C standard, other values: c89, c99 -std=c11 # general warnings -Wall -Wextra -pedantic # enable this flag to stop compilation on warnings #-Werror # specific warnings # variable shadowing -Wshadow # switch/case safety -Wswitch-default -Wswitch-enum # unreachable code, bad 99% of the time -Wunreachable-code # prototypes warnings -Wstrict-prototypes -Wmissing-prototypes # function declaration -Werror-implicit-function-declaration # optimisation level # -Os: like -O2 without space-expensive optimizations # -O2: good speed/size tradeoff # -O3: gotta go fast -Os ) fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) add_executable(${PROJECT_NAME} ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS}) target_link_libraries(${PROJECT_NAME} Gint::Gint) if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) generate_g1a( TARGET ${PROJECT_NAME} OUTPUT "${PROJECT_NAME}.g1a" NAME "${PROJECT_NAME}" ICON assets-fx/icon.png) elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) generate_g3a( TARGET ${PROJECT_NAME} OUTPUT "${PROJECT_NAME}.g3a" NAME "${PROJECT_NAME}" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) endif()