CTK 0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkMacroOptionUtils.cmake
Go to the documentation of this file.
1
2function(ctk_option_logical_expression_to_message varname logical_expr)
3 set(enabling_msg)
4 foreach(arg ${logical_expr})
5 if(NOT "${${arg}}" STREQUAL "")
6 set(value_as_int 0)
7 if(${${arg}})
8 set(value_as_int 1)
9 endif()
10 set(enabling_msg "${enabling_msg} ${arg}:${value_as_int}")
11 else()
12 set(enabling_msg "${enabling_msg} ${arg}")
13 endif()
14 endforeach()
15 set(${varname} ${enabling_msg} PARENT_SCOPE)
16endfunction()
17
18macro(ctk_option option_prefix name doc default)
19 option(${option_prefix}_${name} ${doc} ${default})
20 mark_as_advanced(${option_prefix}_${name})
21 list(APPEND ${option_prefix}S ${name})
22 set(_logical_expr ${ARGN})
23 if(_logical_expr AND NOT ${option_prefix}_${name})
24 if(${ARGN})
25 # Set the variable ON.
26 set(${option_prefix}_${name} ON)
27 # Generate user-friendly message
28 set(enabling_msg)
29 ctk_option_logical_expression_to_message(enabling_msg "${ARGN}")
30 message(STATUS "Enabling [${option_prefix}_${name}] because of [${enabling_msg}] evaluates to True")
31 endif()
32 endif()
33 mark_as_superbuild(${option_prefix}_${name})
34endmacro()
35
36macro(ctk_lib_option name doc default)
37 ctk_option(CTK_LIB ${name} ${doc} ${default} ${ARGN})
38 if(CTK_BUILD_ALL_LIBRARIES)
39 set(CTK_LIB_${name} 1)
40 message(STATUS "Enabling [CTK_LIB_${name}] because of [CTK_BUILD_ALL_LIBRARIES:${CTK_BUILD_ALL_LIBRARIES}] evaluates to True")
41 endif()
42endmacro()
43
44macro(ctk_plugin_option name doc default)
45 ctk_option(CTK_PLUGIN ${name} ${doc} ${default} ${ARGN})
46 if(CTK_BUILD_ALL_PLUGINS)
47 set(CTK_PLUGIN_${name} 1)
48 message(STATUS "Enabling [CTK_PLUGIN_${name}] because of [CTK_BUILD_ALL_PLUGINS:${CTK_BUILD_ALL_PLUGINS}] evaluates to True")
49 endif()
50endmacro()
51
52macro(ctk_app_option name doc default)
53 ctk_option(CTK_APP ${name} ${doc} ${default} ${ARGN})
54 if(CTK_BUILD_ALL_APPS)
55 set(CTK_APP_${name} 1)
56 message(STATUS "Enabling [CTK_APP_${name}] because of [CTK_BUILD_ALL_APPS:${CTK_BUILD_ALL_APPS}] evaluates to True")
57 endif()
58endmacro()
59
60macro(ctk_enable_option_raw name doc default)
61 option(${name} "${doc}" ${default})
62 mark_as_superbuild(${name})
63 if(DEFINED ${name}_internal)
64 if(${${name}} AND ${${name}_internal})
65 if(NOT (${ARGN}))
66 get_property(_doc_string CACHE ${name} PROPERTY HELPSTRING)
67 set(${name} OFF CACHE BOOL ${_doc_string} FORCE)
68 message("Full support for [${name}] disabled")
69 endif()
70 endif()
71 endif()
72 set(${name}_internal ${${name}} CACHE INTERNAL "" FORCE)
73endmacro()
74
75macro(ctk_enable_option name doc default)
76 ctk_enable_option_raw(CTK_ENABLE_${name} ${doc} ${default} ${ARGN})
77endmacro()