Цитата(alx2 @ Apr 1 2016, 10:19)

Извините, но по-моему у Вас в голове каша.
Линковка производится программой ld, так как именно это и есть линкер.
Программа ar - это архиватор, который объединяет объектные файлы в архив (библиотеку).
Программа же gcc - это просто враппер, который сам по себе никакой обработки компонентов программы не выполняет, а вызывает для этого другое программы - препроцессор, компилятор, ассемблер, линкер. Каким именно операции будут выполнены, зависит от параметров командной строки.
Думаю, Вам стоит разобраться, из каких этапов (операций) состоит процесс сборки программы, что для каждого этапа является входными данными, а что - результатом.
И сам вопрос ваш, действительно, непонятен. Если Вы знаете и как получить библиотеку, и как получить hex-файл, какая проблема выполнить и то, и другое?
Да я напутал с названиями и терминами. От этого вопрос и получился непонятным. Но, как это не парадоксально я знаю то, о чем Вы говорите.
Цитата(alx2 @ Apr 1 2016, 10:19)

Указать кому/чему? make'у? Написать в Makefile что-то типа:
Код
liba.a: file1.o file2.o file3.o
arm-none-eabi-gcc-ar cq $@ $^
arm-none-eabi-gcc-ranlib $@
По сути мне нужно было только узнать, каким образом указать CMAKE, чтобы он использовал в качестве архиватора именно arm-none-eabi-gcc-ar.
Я разобрался. Чтобы получить в результате компиляции проекта статический архив (библиотеку) и одновременно исполняемый hex-файл нужно присвоить CMAKE переменной CMAKE_AR значение пути к программе архиватору:
Код
SET(CMAKE_AR arm-none-eabi-gcc-ar CACHE INTERNAL "")
А затем добавить создание архива (библиотеки) с последующим его использованием при линковке приложения:
Код
ADD_LIBRARY(mylib ${PROJECT_SOURCES})
ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}.elf ${CAP_SOURCES})
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME}.elf runTime)
ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} ARGS -Oihex ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.hex)
Это вообщем-то я и спрашивал - не сразу удалось разобраться, поэтому и спросил.