Yet Another Cmake Error “The C Compiler YAGARTO is

2019-09-15 13:31发布

Well after trying and reading for last three Days, i 'm not still able to comile and run a simple c-Project with CMAKE.

i use YAGARTO-arm-none-eabi-gcc compiler/linker on windows and have already installed both Cygwin and mingw. after creating a simple c-make project on ecplise-CDT i would like to let cmake build me a MAKEFILE. My yagarto.cmake looks like that:

 # GCC toolchain prefix
IF(NOT TOOLCHAIN_PREFIX)
     SET(TOOLCHAIN_PREFIX "C:/yagarto-20121222")
     MESSAGE(STATUS "No TOOLCHAIN_PREFIX specified, using default: " ${TOOLCHAIN_PREFIX})
ENDIF()

IF(NOT TARGET_TRIPLET)
    SET(TARGET_TRIPLET "arm-none-eabi")
    MESSAGE(STATUS "No TARGET_TRIPLET specified, using default: " ${TARGET_TRIPLET})
ENDIF()

SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_PREFIX}/bin)
SET(TOOLCHAIN_INC_DIR ${TOOLCHAIN_PREFIX}/${TARGET_TRIPLET}/include)
SET(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_PREFIX}/${TARGET_TRIPLET}/lib)

SET(CMAKE_SYSTEM_NAME Windows CACHE INTERNAL "system name")
SET(CMAKE_SYSTEM_PROCESSOR arm CACHE INTERNAL "processor")

SET(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc CACHE INTERNAL "c compiler")
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++ CACHE INTERNAL "cxx compiler")
SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-as CACHE INTERNAL "asm compiler")

SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy CACHE INTERNAL "objcopy")
SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objdump CACHE INTERNAL "objdump")

SET(CMAKE_C_FLAGS "-isystem ${TOOLCHAIN_INC_DIR} -mthumb -mcpu=cortex-m3 -fno-builtin -Wall -std=gnu99 -fdata-sections -ffunction-sections" CACHE INTERNAL "c compiler flags")
SET(CMAKE_CXX_FLAGS "-isystem ${TOOLCHAIN_INC_DIR} -mthumb -mcpu=cortex-m3 -fno-builtin -Wall -fdata-sections -ffunction-sections" CACHE INTERNAL "cxx compiler flags")
SET(CMAKE_ASM_FLAGS "-mthumb -mcpu=cortex-m3" CACHE INTERNAL "asm compiler flags")

SET(CMAKE_C_FLAGS_DEBUG "-g -c -O2 -mcpu=cortex-m3 -mthumb -mfpu=vfp -mfloat-abi=soft -Wa,-meabi=5 -ffunction-sections -fno-common -fno-exceptions -pedantic -Wall -Wextra -Wno-missing-field-initializers" CACHE INTERNAL "c debug compiler flags")
SET(CMAKE_CXX_FLAGS_DEBUG $(CMAKE_C_FLAGS_DEBUG) CACHE INTERNAL "cxx debug compiler flags")
SET(CMAKE_ASM_FLAGS_DEBUG "-g -gstabs+" CACHE INTERNAL "asm debug compiler flags")

SET(CMAKE_C_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "c release compiler flags")
SET(CMAKE_CXX_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "cxx release compiler flags")
SET(CMAKE_ASM_FLAGS_RELEASE "" CACHE INTERNAL "asm release compiler flags")

SET(CMAKE_EXE_LINKER_FLAGS "-o -mcpu=cortex-m3 -mthumb -nostartfiles -Wl,-TCMakeTst.ld,-M=CMakeTst.map,--gc-sections" CACHE INTERNAL "exe link flags")
SET(CMAKE_MODULE_LINKER_FLAGS "-L${TOOLCHAIN_LIB_DIR} -mthumb -mcpu=cortex-m3 -flto" CACHE INTERNAL "module link flags")
SET(CMAKE_SHARED_LINKER_FLAGS "-L${TOOLCHAIN_LIB_DIR} -mthumb -mcpu=cortex-m3 -flto" CACHE INTERNAL "shared link flags")

SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PREFIX}/${TARGET_TRIPLET} CACHE INTERNAL "cross root directory")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "")
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY CACHE INTERNAL "")
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY CACHE INTERNAL "")

so this is also my CMakeLists.txt

SET(CMAKE_TOOLCHAIN_FILE CMakeTst.cmake)
SET(CMAKE_GENERATOR "Unix Makefiles")
SET(CMAKE_EXECUTABLE_SUFFIX  elf)
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
cmake_minimum_required (VERSION 2.6)
project(CMakeTst) 
add_executable(CMakeTst main.c)

is there any solution to get this massege solved??

  The C compiler "C:/yagarto-20121222/bin/arm-none-eabi-gcc" is not able to
  compile a simple test program.

  It fails with the following output:

  Change Dir: C:/eclipseProjekte/CMakeTst/CMakeFiles/CMakeTmp

thanks


@georges this is my Cmakelistfile try this one, it also works with eclipse

#SET(CMAKE_TOOLCHAIN_FILE MinProj.cmake)
INCLUDE(CMakeForceCompiler)
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_C_COMPILER_FORCED TRUE)
CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU) 
CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-gcc GNU) 

INCLUDE_DIRECTORIES("C:\\yagarto-20121222\\arm-none-eabi\\include")
SET(CMAKE_BUILD_FLAGS "-Wa,-meabi=5 -ffunction-sections -fno-common -fno-exceptions -pedantic -Wall -Wextra -Wno-missing-field-initializers -nostartfiles -O0 -mcpu=cortex-m3 -mthumb -mfpu=vfp -mfloat-abi=soft")
SET(CMAKE_LINKER_FLAGS "mcpu=cortex-m3 -mthumb -nostartfiles -Wl,-T${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.ld,-M=${CMAKE_PROJECT_NAME}.map,--gc-sectionsl ${CMAKE_EXE_LINKER_FLAGS}" CACHE INTERNAL "exe link flags")

SET(CMAKE_GENERATOR "Unix Makefiles")
cmake_minimum_required (VERSION 2.6)
project(iceJupi) 
add_executable(${CMAKE_PROJECT_NAME}.elf main.c startup_stm32f10x_hd.o)

also i would recommand you to check this link. is realy helpfull link

0条回答
登录 后发表回答