Моя библиотека построена с некоторым включенным #define
(например, -DUSE_FOO=1
), а также USE_FOO
используется в публичном заголовочном файле.Проблема заключается в том, что приложение, использующее библиотеку, включает в себя открытый файл заголовка и, таким образом, USE_FOO
появляется в контексте приложения и будет неопределенным в контексте приложения.
Как я могу экспортировать USE_FOO
определение для приложения на основе того, является ли оновключен в библиотеку или нет?
например,
include/public/foo.h
lib/libfoo.so --> foo.cc
in foo.h contain code as
#if defined (USE_FOO)
#define SIZE 5
#else
#define SIZE 10
#endif
foo.cc
#include "foo.h"
int getSizeFromLib()
{
return SIZE;
}
libfoo.so
исходный файл включает в себя foo.h
и собран путем настройки USE_FOO
во время компиляции.
Теперь приложение использует библиотеку libfoo, включая public/foo.h
, и использует свою собственную конфигурацию сборки для сборки приложения.но проблема в том, что приложение не знает USE_FOO
, которое всегда будет неопределенным на стороне приложения.Таким образом, SIZE
будет 10 в приложении, но 5 внутри библиотеки
Я хочу, чтобы USE_FOO
экспортировался в приложение в зависимости от того, определено ли оно для libfoo.so
или нет.Т.е. если libfoo.so
построен с USE_FOO=1
, приложение также должно видеть USE_FOO=1
и наоборот
Если это невозможно сделать заранее определенным способом, тогда любой прием для решения этой проблемы будет приветствоваться.