Correct import/export of symbols from library

More generally is there a way to do something like that in A.h, header of some library A

#ifdef <some symbol defined only when building A>
#ifdef <some symbol defined only if A is shared>
<do something>
#else // A is static
<do stg else>
#else // I'm not building A, I'm building another target that uses A
#ifdef <some symbol defined only if A is shared>
<do something>
#else // A is static
<do stg else>
#endif
#endif

How can it be achieved, without collision between the different targets involved (a symbol defined for a target must not be confused with one of another target).

Thanks