Сейчас пытаюсь воспользоваться библиотекой mbed (конкретно - под STM32F4XX) сразу в двух проектах. Изначально думал, что можно положить библиотеку куда-нибудь, и пользоваться ею в обоих проектах одновременно, ничего не меняя. Но вот понял, что, чтобы задействовать, скажем, UART, необходимо, чтобы в HAL-файле device.h макрос DEVICE_SERIAL был равен "1" (тогда как он там по умолчанию "0").
Положим, я заменю в этом файле 0 на 1 - но это, во-первых, окажет влияние и на другой проект, в котором мне UART не нужен, а во-вторых, лезть менять файлы в чужой библиотеке?... как-то не комильфо.
И вот я не вижу выхода из этой ситуации, кроме как копировать все необходимые файлы набора HAL в каждый из двух проектов, и компилировать их уже из этих локальных копий. А это как-то некрасиво - там куча .c-шных файлов, в которых я ничего менять не собираюсь да и не должен. Но они все завязаны на "лежащий тут же" device.h. Попытка редефайнить DEVICE_SERIAL предсказуемо приводит к ругани со стороны компилятора, попытка предварительно #undef-ить макрос в настройках проекта - к тому, что "идентификатор не определен", и это правильно: соответствующий h-ник не транслируется.
Получается, таки локальная копия всего HAL (а заодно уж, может, и startup_STM32F40x.s+sys.cpp+STM32F407.sct из target-toolchain директории cmsis) - единственный путь, или я чего-то не понимаю в методике использования mbed?