3
################### macros from http://www.cmake.org/Wiki/CMakeMacroListOperations
13
MACRO(LIST_INDEX var index)
15
FOREACH(i RANGE 1 ${index})
21
######### LIST_CONTAINS usage
22
#SET(MYLIST hello world foo bar)
24
#LIST_CONTAINS(contains foo ${MYLIST})
26
# MESSAGE("MYLIST contains foo")
29
#LIST_CONTAINS(contains baz ${MYLIST})
31
# MESSAGE("MYLIST does not contain baz")
35
MACRO(LIST_CONTAINS var value)
37
FOREACH (value2 ${ARGN})
38
IF (${value} STREQUAL ${value2})
40
ENDIF (${value} STREQUAL ${value2})
42
ENDMACRO(LIST_CONTAINS)
44
############################################################
45
################### macros from http://www.cmake.org/Wiki/CMakeMacroParseArguments
46
MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
47
#MESSAGE("!!!! ${prefix} args-->${arg_names}<-- opt-->${option_names}<--")
49
FOREACH(arg_name ${arg_names})
50
SET(${prefix}_${arg_name})
52
FOREACH(option ${option_names})
53
SET(${prefix}_${option} FALSE)
56
SET(current_arg_name DEFAULT_ARGS)
59
#debug#MESSAGE("---->${arg}<------")
60
LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
62
SET(${prefix}_${current_arg_name} ${current_arg_list})
63
SET(current_arg_name ${arg})
66
LIST_CONTAINS(is_option ${arg} ${option_names})
68
SET(${prefix}_${arg} TRUE)
70
SET(current_arg_list ${current_arg_list} ${arg})
74
SET(${prefix}_${current_arg_name} ${current_arg_list})
75
ENDMACRO(PARSE_ARGUMENTS)
77
#############################################################
78
#MACRO(SHOW_USAGE_OF_PARSE_ARGUMENTS)
79
# PARSE_ARGUMENTS(PLUGIN
80
# "EXPORTS;AUTOLOAD_SCRIPTS;LINK_LIBRARIES;DEPENDS"
81
# "AUTO_INSTALL;NO_MODULE"
84
# CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS})
85
# CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS})
87
# MESSAGE("*** Arguments for ${PLUGIN_NAME}")
88
# MESSAGE("Sources: ${PLUGIN_SOURCES}")
89
# MESSAGE("Exports: ${PLUGIN_EXPORTS}")
90
# MESSAGE("Autoload scripts: ${PLUGIN_AUTOLOAD_SCRIPTS}")
91
# MESSAGE("Link libraries: ${PLUGIN_LINK_LIBRARIES}")
92
# MESSAGE("Depends: ${PLUGIN_DEPENDS}")
93
# IF (PLUGIN_AUTO_INSTALL)
94
# MESSAGE("Auto install")
95
# ENDIF (PLUGIN_AUTO_INSTALL)
96
# IF (PLUGIN_NO_MODULE)
97
# MESSAGE("No module")
98
# ENDIF (PLUGIN_NO_MODULE)
99
#ENDMACRO(SHOW_USAGE_OF_PARSE_ARGUMENTS)
101
#SHOW_USAGE_OF_PARSE_ARGUMENTS(MyAppCore NO_MODULE CoreSource1.cxx CoreSource2.cxx EXPORTS RequiredObject1 RequredObject2 AUTOLOAD_SCRIPTS startup.py initialize.py)
103
#SHOW_USAGE_OF_PARSE_ARGUMENTS(MyAppDefaultComponents
104
# Component1.cxx Component2.cxx
105
# EXPORTS Component1 Component2
109
########################################################