1macro(get_preprocessor_entry CONTENTS KEYWORD VARIABLE) 2 string(REGEX MATCH 3 "# *define +${KEYWORD} +((\"([^\n]*)\")|([^ \n]*))" 4 PREPROC_TEMP_VAR 5 ${${CONTENTS}} 6 ) 7 if (CMAKE_MATCH_3) 8 set(${VARIABLE} ${CMAKE_MATCH_3}) 9 else () 10 set(${VARIABLE} ${CMAKE_MATCH_4}) 11 endif () 12endmacro() 13 14macro(has_preprocessor_entry CONTENTS KEYWORD VARIABLE) 15 string(REGEX MATCH 16 "\n *# *define +(${KEYWORD})" 17 PREPROC_TEMP_VAR 18 ${${CONTENTS}} 19 ) 20 if (CMAKE_MATCH_1) 21 set(${VARIABLE} TRUE) 22 else () 23 set(${VARIABLE} FALSE) 24 endif () 25endmacro() 26 27macro(replace_preprocessor_entry VARIABLE KEYWORD NEW_VALUE) 28 string(REGEX REPLACE 29 "(// *)?# *define +${KEYWORD} +[^ \n]*" 30 "#define ${KEYWORD} ${NEW_VALUE}" 31 ${VARIABLE}_TEMP 32 ${${VARIABLE}} 33 ) 34 set(${VARIABLE} ${${VARIABLE}_TEMP}) 35endmacro() 36 37macro(set_preprocessor_entry VARIABLE KEYWORD ENABLE) 38 if (${ENABLE}) 39 set(TMP_REPLACE_STR "#define ${KEYWORD}") 40 else () 41 set(TMP_REPLACE_STR "// #define ${KEYWORD}") 42 endif () 43 string(REGEX REPLACE 44 "(// *)?# *define +${KEYWORD} *\n" 45 ${TMP_REPLACE_STR} 46 ${VARIABLE}_TEMP 47 ${${VARIABLE}} 48 ) 49 set(${VARIABLE} ${${VARIABLE}_TEMP}) 50endmacro() 51 52