Вынести define из библиотеки в скетч

Доброго времени суток.
Подскажите, как вынести define из библиотеки в скетч.
Суть следующая, есть библиотека (websocket) внутри нее конструкция

#include "config.h"

#if NETWORK_CONTROLLER == ETHERNET_CONTROLLER_W5X00
#  include <Ethernet.h>
/** Specifies maximum number of clients connected to server. */
constexpr uint8_t kMaxConnections{MAX_SOCK_NUM};
#elif NETWORK_CONTROLLER == ETHERNET_NATIVE_CONTROLLER_W5X00
#  include <NativeEthernet.h>
/** Specifies maximum number of clients connected to server. */
constexpr uint8_t kMaxConnections{MAX_SOCK_NUM};
#elif NETWORK_CONTROLLER == ETHERNET_CONTROLLER_ENC28J60
#  include <EthernetENC.h>
constexpr uint8_t kMaxConnections{4};
#elif NETWORK_CONTROLLER == NETWORK_CONTROLLER_WIFI
#  if PLATFORM_ARCH == PLATFORM_ARCHITECTURE_ESP8266
#    include <ESP8266WiFi.h>
#  else
#    include <WiFi.h>
#  endif
#  include <WiFiClient.h>
#  include <WiFiServer.h>
constexpr uint8_t kMaxConnections{8};
#else
#  error "Network controller is required!"
#endif

Соответственно в config.h

#ifndef NETWORK_CONTROLLER
#  define NETWORK_CONTROLLER ETHERNET_CONTROLLER_W5X00
#endif

Я хочу вынести #define NETWORK_CONTROLLER ETHERNET_NATIVE_CONTROLLER_W5X00
в скетч, то есть пишу вот так

#define NETWORK_CONTROLLER ETHERNET_NATIVE_CONTROLLER_W5X00

#include <WebSocketServer.h>

Но так не работает, все равно тянется библиотека Ethernet.h, а должна NativeEthernet.h.
Если закоментить в config.h # define NETWORK_CONTROLLER ETHERNET_CONTROLLER_W5X00 то получаю ошибку компиляции error “Network controller is required!”, то есть получается NETWORK_CONTROLLER в библиотеку не попал.
Как сделать, чтобы он туда попал?

Просто – никак. Сложно – Вы не сможете (если бы могли, сделали бы и вопроса бы этого не было).

Что Вы можете – перетащить файлы библиотеки к себе в проект и забыть, что у Вас была какая-то библиотека. У себя в проекте меняйте в этих файла что Вам нравится. Это вполне для Вас реально.

1 лайк

если в библиотеке есть .cpp файлы - то никак

Решил вопрос, спасибо

каким образом?

Не совсем так, как описывал задачу, пока ждал ответа - уже понял, что так не работает, как я хотел.
Мне этот условный выбор нужен для того, чтобы компилировать один скетч под разные “железные” реализации. Соответственно для удобства я в boards.txt внес изменения, чтобы при выборе в меню разных вариантов переопределялись флаги build.flags.defs.
А они уже видны и в скетче и в библиотеках.
Просто исправил config.h

#ifndef NETWORK_CONTROLLER
# ifdef TEENSY41_V100
#  define NETWORK_CONTROLLER ETHERNET_NATIVE_CONTROLLER_W5X00
# else
#  define NETWORK_CONTROLLER ETHERNET_CONTROLLER_W5X00	
# endif
#endif