]> Creatis software - crea.git/blob - cmake/CREAMacro_DynamicLibraryExport.cmake
*** empty log message ***
[crea.git] / cmake / CREAMacro_DynamicLibraryExport.cmake
1 # Manages the shared library creation/use 
2 # * Creates an option ${LIBRARY_NAME}_BUILD_SHARED 
3 # * Generates the file ${LIBRARY_NAME}_EXPORT.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_DYNAMIC_LIBRARY_EXPORT_OPTION LIBRARY_NAME)
7
8   # STATIC OR DYNAMIC (SHARED) ? 
9   OPTION( ${LIBRARY_NAME}_BUILD_SHARED 
10   #JPR 8 Avr 2011 ON-> OFF, to avoid troubles with unaware users
11     "Build ${LIBRARY_NAME} as a shared library ( i.e. dynamic) ?" OFF)
12   IF (${LIBRARY_NAME}_BUILD_SHARED)
13     SET(${LIBRARY_NAME}_SHARED SHARED)
14     CREA_DEFINE(${LIBRARY_NAME}_BUILD_SHARED)
15   ENDIF(${LIBRARY_NAME}_BUILD_SHARED)
16   
17   CREA_DEFINE(${LIBRARY_NAME}_EXPORT_SYMBOLS)
18
19   # ADDS CURRENT BINARY DIR TO INCLUDE DIRS
20   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
21
22   # CONFIGURES ${LIBRARY_NAME}_EXPORT.h
23   CONFIGURE_FILE(
24     ${CREA_CMAKE_DIR}/LIBRARY_NAME_EXPORT.h.in
25     ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_EXPORT.h
26     @ONLY IMMEDIATE
27     )
28   # ADDS IT TO THE LIST OF HEADERS
29   SET(${LIBRARY_NAME}_HEADERS
30     ${${LIBRARY_NAME}_HEADERS}
31     ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_EXPORT.h
32     )
33   
34
35 ENDMACRO(CREA_DYNAMIC_LIBRARY_EXPORT_OPTION LIBRARY_NAME)
36
37
38 # Manages the shared library creation/use 
39 # * Generates the file ${LIBRARY_NAME}_EXPORT.h which 
40 #   defines the symbols ${LIBRARY_NAME}_EXPORT and ${LIBRARY_NAME}_CDECL
41 #   to be used in exported classes/functions declarations
42 MACRO(CREA_DYNAMIC_LIBRARY_EXPORT LIBRARY_NAME)
43
44   CREA_DEFINE(${LIBRARY_NAME}_BUILD_SHARED)
45   CREA_DEFINE(${LIBRARY_NAME}_EXPORT_SYMBOLS)
46
47   # ADDS CURRENT BINARY DIR TO INCLUDE DIRS
48   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
49
50   # CONFIGURES ${LIBRARY_NAME}_EXPORT.h
51   SET(LIBRARY_NAME ${LIBRARY_NAME})
52   CONFIGURE_FILE(
53     ${CREA_CMAKE_DIR}/LIBRARY_NAME_EXPORT.h.in
54     ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_EXPORT.h
55     @ONLY IMMEDIATE
56     )
57   # ADDS IT TO THE LIST OF HEADERS
58   SET(${LIBRARY_NAME}_HEADERS
59     ${${LIBRARY_NAME}_HEADERS}
60     ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_EXPORT.h
61     )
62
63 ENDMACRO(CREA_DYNAMIC_LIBRARY_EXPORT LIBRARY_NAME)