]> Creatis software - crea.git/blob - cmake/CREAMacro_ManageSharedLibrary.cmake
*** empty log message ***
[crea.git] / cmake / CREAMacro_ManageSharedLibrary.cmake
1 # Manages the shared library creation/use 
2 # * Creates an option ${LIBRARY_NAME}_BUILD_SHARED 
3 # * Generates the file ${LIBRARY_NAME}DLLImportExport.h which 
4 #   defines the symbols ${LIBRARY_NAME}_EXPORT and ${LIBRARY_NAME}_CDECL
5 #   to be used in exported classes/functions declarations
6 MACRO(CREA_MANAGE_SHARED_LIBRARY LIBRARY_NAME)
7
8   # STATIC OR DYNAMIC (SHARED) ? 
9   OPTION( ${LIBRARY_NAME}_BUILD_SHARED 
10     "Build ${LIBRARY_NAME} as a shared library (dynamic) ?" ON)
11   IF (${LIBRARY_NAME}_BUILD_SHARED)
12     SET(${LIBRARY_NAME}_SHARED SHARED)
13     CREA_DEFINE(${LIBRARY_NAME}_BUILD_SHARED)
14   ENDIF(${LIBRARY_NAME}_BUILD_SHARED)
15   
16   CREA_DEFINE(${LIBRARY_NAME}_EXPORT_SYMBOLS)
17
18   # ADDS CURRENT BINARY DIR TO INCLUDE DIRS
19   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
20
21   # CONFIGURES ${LIBRARY_NAME}DLLImportExport.h
22   CONFIGURE_FILE(
23     ${CREA_CMAKE_DIR}/LIBRARY_NAMEDLLImportExport.h.in
24     ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}DLLImportExport.h
25     @ONLY IMMEDIATE
26     )
27   # ADDS IT TO THE LIST OF HEADERS
28   SET(${LIBRARY_NAME}_HEADERS
29     ${${LIBRARY_NAME}_HEADERS}
30     ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}DLLImportExport.h
31     )
32   
33
34 ENDMACRO(CREA_MANAGE_SHARED_LIBRARY LIBRARY_NAME)
35