Сейчас моя toolchain.cmake
выглядит лок это:Cmake отдельного компоновщик и компилятор Флаги
CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU)
CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-gcc GNU)
SET(CMAKE_ASM_COMPILER arm-none-eabi-as)
SET(CMAKE_OBJCOPY arm-none-eabi-objcopy CACHE INTERNAL "objcopy" FORCE)
SET(CMAKE_OBJDUMP arm-none-eabi-objdump CACHE INTERNAL "objdump" FORCE)
# Compiler Flags
SET(MCU_FLAGS "-mcpu=cortex-m3 -mthumb")
SET(CMAKE_BUILD_FLAGS "-O2 -g -mfpu=vfp -mfloat-abi=soft -Wa,-meabi=5 -ffunction-sections -fno-common -pedantic -Wall -Wextra -Wno-missing-field-initializers")
SET(CMAKE_C_FLAGS "${MCU_FLAGS} ${CMAKE_BUILD_FLAGS}" CACHE INTERNAL "c compiler flags")
SET(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS} CACHE INTERNAL "cxx compiler flags")
SET(CMAKE_ASM_FLAGS "-g -mcpu=cortex-m3 -mthumb -mfpu=vfp -mfloat-abi=soft -meabi=5 -warn" CACHE INTERNAL "asm compiler flags")
SET(CMAKE_EXE_LINKER_FLAGS "-mcpu=cortex-m3 -mthumb -Wall -Wextra -Wno-missing-field-initializers -g -nostartfiles -Wl,-T1.ld,-M=1.map,--gc-sections" CACHE INTERNAL "exe link flags")
Проблема заключается в том, что CMake переходит к Linker дополнителен компилятору флагам! Есть ли способ отделить эти два?
Другое дело, если я использую другую цепочку инструментов-компиляторов (например, Fujitsu Softtune), как я могу сказать CMake явно использовать Linker, а не компилятор для привязки объектов?
Благодаря
Так я наконец-то решил. для evryone еще с той же проблемой, я изменил CMakelists следующим образом:
add_executable(${PROJECT_NAME} ${PROJECT_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C CXX ASM)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINK_FLAGS "${LD_FLAGS_STR} -m ${PROJECT_NAME}.map")
set(CMAKE_C_LINK_EXECUTABLE "FLNK907S.EXE -o <TARGET> <LINK_FLAGS> <OBJECTS>")
и она отлично работает ...
где ${LD_FLAGS_STR}
это только список моих флагов компоновщика (собственная переменная). и LNK907S.EXE
- это имя Linker i 'm using (Fujitsu).
Здесь, как представляется, здесь требуются конкретные настройки проекта. У меня такая же общая проблема, и вам больше не придется повторять эти настройки в каждой из десятков библиотек и двоичных файлов, которые я пытаюсь создать. –
Привет, я поддержал. Я столкнулся с той же проблемой. Единственный вопрос, который у меня есть, - у вас есть конкретные настройки проекта. Было бы здорово, если бы вы могли опубликовать, что такое $ {LD_FLAGS_STR}, и что такое. Поскольку я также хочу уменьшить/удалить неиспользованную часть моего кода –