Pregunta

¿Cómo puedo especificar banderas únicas para DLL sólo construye. Por defecto libtool añade -DDLL_EXPORT lo cual está bien para la mayoría de los proyectos que siguen las convenciones de GNU, pero si trabajo, por ejemplo, con el impulso que puede tener que especificar para mis banderas de biblioteca: -DDLL_EXPORT -DBOOST_ALL_DYN_LINK de DLL sólo construye, también a veces quiero condicional construye así que necesitar algunos define específicas para DLL / SO de construcción.

Por desgracia, no puedo encontrar una manera de cómo hacer esto con libtool, qué parámetros se debe usar?

P.S:.. Ni siquiera tratar de sugerir a moverse a CMake

Ejemplo:

Yo uso foo biblioteca que los enlaces a la barra y requiere -DBAR_EXPORTS para obtener símbolos de la única biblioteca dinámica.

¿Hay algo así como

 libfoo_la_dynamic_CXXFLAGS = -DBAR_EXPORTS

¿Alguien?

Solución alternativa: (bastante feo)

Crear un archivo `defines.h

#if defined(PIC) || defined(DLL_EXPORT)
#define BAR_EXPORTS
#endif

Y a continuación:

 libfoo_la_CXXFLAGS += -include defines.h

feo pero debería funcionar.

¿Fue útil?

Solución

Puede desactivar la construcción de la biblioteca compartida por defecto con

LT_INIT([disable-shared])

A continuación, se puede utilizar en combinación con AM_CONDITIONAL --enabled-shared y establecer las definiciones adicionales si se solicita explícitamente biblioteca compartida. OIA, habilite la construcción estática o compartido, pero no ambas al mismo tiempo.

Otros consejos

No es que bonito, pero podría utilizar un condicional para comprobar si se ha definido DLL_EXPORT y si se trata de definir los demás que necesita?

No soy tan bueno con autotools, prefiero CMake pero pareces muy en contra de eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top