Создайте среду сборки для проекта "C", чтобы динамически выбирать папки во время компиляции

Допустим, моя структура папок выглядит примерно так...

+ - Приложение
|
+ - MICRO_CONTROLLER_1
|
+ - MICRO_CONTROLLER_2
|
+ - MICRO_CONTROLLER_3

и у меня есть переключатель компиляции ( SELECT_MICRO), установленный на #define SELECT_MICRO == MICRO_CONTROLLER_1, тогда мой проект должен создать приложение с файлами драйверов в MICRO_CONTROLLER_1, аналогично, если #define SELECT_MICRO == MICRO_CONTROLLER_2_приложение файлов в приложении должно быть в приложении

Пожалуйста, дайте мне знать, если есть шаблон для достижения вышеуказанного.

3 ответа

Вы можете экспортировать этот конкретный путь к папке, которую хотите создать, и указать путь к исполняемому файлу. Вы можете получить дополнительную информацию. в этой теме.

Как я могу добавить dir к $PATH в Makefile?

Или просто поддерживайте разные Make-файлы для создания разных сборок и используйте make -f для запуска этого конкретного make-файла.

Я надеюсь, что это то, что вы, наконец, хотите выполнить.

Это может работать, только если каталоги содержат только файлы. #define - это директива препроцессора. Если у каталогов есть исходные файлы, вам нужно решить это на уровне системы сборки, а не на уровне препроцессора.

Предполагая, что это просто включить файлы, вы просто #include SELECT_MICRO # "Interface.h"

Как правило, вы бы define определения вашего препроцессора, чтобы он указывал препроцессору включать, например, только блоки кода MICRO_CONTROLLER_1 и игнорировать все остальное.

Что-то вроде следующего должно быть достаточно:

#if defined(MICRO_CONTROLLER_1)
// Block of code that is only available to MICRO_CONTROLLER_1
#elif defined(MICRO_CONTROLLER_2)
// ...
// All other microcontrollers you are supporting would follow this structure.
#endif

Тогда вам нужно будет define MICRO_CONTROLLER_1. Если вы используете IDE для разработки, обычно есть опция проекта для директив препроцессора. Это где вы бы define MICRO_CONTROLLER_1. Затем вы можете создать различные "конфигурации" - по одной для каждого из целевых микроконтроллеров.

Другие вопросы по тегам