1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
<Comment># This CMakeLists.txt doesn't do anything useful,</Comment><br/>
<Comment># but it shoudl demonstrate the cmake syntax highlighting</Comment><br/>
<Comment>#</Comment><br/>
<Comment># Alex Turbov <i.zaufi@gmail.com></Comment><br/>
<Comment>#</Comment><br/>
<Normal Text></Normal Text><br/>
<Region Marker>#[[.rst:</Region Marker><br/>
<Comment>Demo</Comment><br/>
<Comment>----</Comment><br/>
<Comment></Comment><br/>
<Comment>This is an </Comment><Bold>**RST**</Bold><Comment> documentation.</Comment><br/>
<Comment></Comment><br/>
<Code>::</Code><br/>
<Code></Code><br/>
<Code> # Sample code block</Code><br/>
<Code> blah-blah</Code><br/>
<Code></Code><br/>
<Comment>But we are about to test CMake here ;-)</Comment><br/>
<Comment></Comment><br/>
<Region Marker>#]]</Region Marker><br/>
<Normal Text></Normal Text><br/>
<Command>cmake_policy</Command><Normal Text>(</Normal Text><Named Args>VERSION</Named Args><Normal Text> </Normal Text><Version Arg>3.11</Version Arg><Normal Text>)</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Command>project</Command><Normal Text>(</Normal Text><br/>
<Normal Text> Demo </Normal Text><Named Args>VERSION</Named Args><Normal Text> </Normal Text><Version Arg>1.0</Version Arg><br/>
<Normal Text> </Normal Text><Named Args>DESCRIPTION</Named Args><Normal Text> </Normal Text><Strings>"For unit testing purposes"</Strings><br/>
<Normal Text> </Normal Text><Comment># </Comment><Alert Level 3>NOTE</Alert Level 3><Comment> that particular languages is a separate style</Comment><br/>
<Normal Text> </Normal Text><Comment># to highlight "special" (well known values)</Comment><br/>
<Normal Text> </Normal Text><Named Args>LANGUAGES</Named Args><Normal Text> </Normal Text><Special Args>C</Special Args><Normal Text> </Normal Text><Special Args>CXX</Special Args><br/>
<Normal Text> )</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Command>set</Command><Normal Text>(SOME_TRUE_OPTION </Normal Text><True Special Arg>TRUE</True Special Arg><Normal Text>) </Normal Text><Comment># `true` value</Comment><br/>
<Comment># `false` value and "internal" variable</Comment><br/>
<Command>set</Command><Normal Text>(</Normal Text><Internal Name>_ANOTHER_FALSE_OPTION</Internal Name><Normal Text> </Normal Text><False Special Arg>OFF</False Special Arg><Normal Text> </Normal Text><Named Args>CACHE</Named Args><Normal Text> </Normal Text><Special Args>INTERNAL</Special Args><Normal Text> </Normal Text><Strings>"Internal option"</Strings><Normal Text>)</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>#BEGIN Message block</Comment><br/>
<Command>message</Command><Normal Text>(</Normal Text><Named Args>FATAL_ERROR</Named Args><Normal Text> </Normal Text><Strings>"Ordinal message do </Strings><Variable Substitution>${VARIABLE_EXPANSION}</Variable Substitution><Strings>"</Strings><Normal Text>)</Normal Text><br/>
<Command>message</Command><Normal Text>(</Normal Text><Named Args>AUTHOR_WARNING</Named Args><Normal Text> </Normal Text><Strings>"... standard variables have a dedicated style"</Strings><Normal Text>)</Normal Text><br/>
<Command>message</Command><Normal Text>(</Normal Text><Named Args>SEND_ERROR</Named Args><Normal Text> </Normal Text><Strings>"e.g. </Strings><Variable Substitution>${</Variable Substitution><Builtin Variable>PROJECT_DESCRIPTION</Builtin Variable><Variable Substitution>}</Variable Substitution><Strings> or </Strings><Variable Substitution>${</Variable Substitution><Builtin Variable>CMAKE_COMMAND</Builtin Variable><Variable Substitution>}</Variable Substitution><Strings>"</Strings><Normal Text>)</Normal Text><br/>
<Command>message</Command><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>STATUS</Named Args><Normal Text> </Normal Text><Strings>[=[</Strings><br/>
<Strings> Raw messages do not do ${VARIABLES_EXPANSION} or \n</Strings><br/>
<Strings> escape symbols highlighting...</Strings><br/>
<Strings> ]=]</Strings><br/>
<Normal Text>)</Normal Text><br/>
<Comment>#END Message block</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment># </Comment><Alert Level 1>ATTENTION</Alert Level 1><Comment> Every command highlight only its own named keywords...</Comment><br/>
<Comment># Also, note aliased (most of the time imported) targets higlighted as well</Comment><br/>
<Command>add_library</Command><Normal Text>(</Normal Text><Aliased Targets>Foo::foo</Aliased Targets><Normal Text> </Normal Text><Named Args>IMPORTED</Named Args><Normal Text> </Normal Text><Named Args>GLOBAL</Named Args><Normal Text>)</Normal Text><br/>
<Command>set</Command><Normal Text>(KW_HL IMPORTED GLOBAL) </Normal Text><Comment># `IMPORTED` and `GLOBAL` are not highlighted here!</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment># Properties are separate ("special value") style</Comment><br/>
<Command>set_target_properties</Command><Normal Text>(</Normal Text><Aliased Targets>Foo::foo</Aliased Targets><Normal Text> </Normal Text><Named Args>PROPERTIES</Named Args><Normal Text> </Normal Text><Property>LOCATION</Property><Normal Text> </Normal Text><Strings>"</Strings><Variable Substitution>${FOO_LIBRARY}</Variable Substitution><Strings>"</Strings><Normal Text>)</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment># Generator expressions</Comment><br/>
<Command>target_compile_definitions</Command><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Comment># </Comment><Alert Level 3>NOTE</Alert Level 3><Comment> Ok w/ CMake >= 3.11</Comment><br/>
<Normal Text> </Normal Text><Aliased Targets>Foo::foo</Aliased Targets><br/>
<Normal Text> </Normal Text><Generator Expression>$<$<</Generator Expression><Generator Expression Keyword>PLATFORM_ID</Generator Expression Keyword><Generator Expression>:Windows>:WINDOWS_FOO></Generator Expression><br/>
<Normal Text> </Normal Text><Generator Expression>$<$<</Generator Expression><Generator Expression Keyword>PLATFORM_ID</Generator Expression Keyword><Generator Expression>:Linux>:</Generator Expression><br/>
<Generator Expression> LINUX_FOO</Generator Expression><br/>
<Generator Expression> $<$<</Generator Expression><Generator Expression Keyword>BOOL</Generator Expression Keyword><Generator Expression>:</Generator Expression><Variable Substitution>${</Variable Substitution><Internal Name>_has_foo</Internal Name><Variable Substitution>}</Variable Substitution><Generator Expression>>:SOME_FOO_PATH=</Generator Expression><Variable Substitution>${</Variable Substitution><Builtin Variable>PROJECT_BINARY_DIR</Builtin Variable><Variable Substitution>}</Variable Substitution><Generator Expression>/foo></Generator Expression><br/>
<Generator Expression> ></Generator Expression><br/>
<Normal Text> )</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Region Marker>#[=======================================================================[.rst:</Region Marker><br/>
<Directive>.. cmake:command:: </Directive><Comment>my_fun</Comment><br/>
<Comment></Comment><br/>
<Italic>*RST*</Italic><Comment> documentation </Comment><InlineLiteral>``can``</InlineLiteral><Comment> refer to </Comment><Role>:cmake:command:</Role><InterpretedText>`any_commands`</InterpretedText><Comment> or</Comment><br/>
<Role>:cmake:variable:</Role><InterpretedText>`variables`</InterpretedText><Comment>...</Comment><br/>
<Comment></Comment><br/>
<Code>.. code-block:: cmake</Code><br/>
<Code> :caption: **Synopsys**</Code><br/>
<Code></Code><br/>
<Code> my_fun([ANYTHING...])</Code><br/>
<Code></Code><br/>
<Region Marker>#]=======================================================================]</Region Marker><br/>
<Command>function</Command><Normal Text>(my_fun)</Normal Text><br/>
<Normal Text> </Normal Text><Comment># </Comment><Alert Level 2>TODO</Alert Level 2><Comment> Add implementation</Comment><br/>
<Command>endfunction</Command><Normal Text>()</Normal Text><br/>
<Normal Text></Normal Text><br/>
<User Function/Macro>my_fun</User Function/Macro><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Comment># Custom functions do not highlight "standard" named args ...</Comment><br/>
<Normal Text> PUBLIC LOCATION PARENT_SCOPE</Normal Text><br/>
<Normal Text> </Normal Text><Comment># only some well-known values ...</Comment><br/>
<Normal Text> </Normal Text><False Special Arg>smth-NOTFOUND</False Special Arg><Normal Text> </Normal Text><True Special Arg>ON</True Special Arg><br/>
<Normal Text> </Normal Text><Comment># and standard variables</Comment><br/>
<Normal Text> </Normal Text><Builtin Variable>PROJECT_VERSION</Builtin Variable><br/>
<Normal Text> </Normal Text><Comment># or substitutions</Comment><br/>
<Normal Text> </Normal Text><Environment Variable Substitution>$ENV{HOME}</Environment Variable Substitution><Normal Text> OR </Normal Text><Variable Substitution>${</Variable Substitution><Internal Name>_internal_var_is_grey</Internal Name><Variable Substitution>}</Variable Substitution><br/>
<Normal Text> )</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment># I dont'recall exactly, but there was some bug with `if`...</Comment><br/>
<Control Flow>if</Control Flow><Normal Text>((A </Normal Text><Named Args>AND</Named Args><Normal Text> </Normal Text><Strings>"</Strings><Variable Substitution>${B}</Variable Substitution><Strings>"</Strings><Normal Text>) </Normal Text><Named Args>OR</Named Args><Normal Text> C </Normal Text><Named Args>OR</Named Args><Normal Text> (var </Normal Text><Named Args>MATCHES</Named Args><Normal Text> </Normal Text><Strings>"regex"</Strings><Normal Text>))</Normal Text><br/>
<Normal Text> </Normal Text><Comment># Anyway... it is Ok nowadays ;-)</Comment><br/>
<Normal Text></Normal Text><br/>
<Control Flow>elseif</Control Flow><Normal Text>(</Normal Text><Named Args>POLICY</Named Args><Normal Text> CMP066)</Normal Text><br/>
<Normal Text> </Normal Text><Command>add_executable</Command><Normal Text>(</Normal Text><Variable Substitution>${</Variable Substitution><Builtin Variable>PROJECT_NAME</Builtin Variable><Variable Substitution>}</Variable Substitution><Normal Text> </Normal Text><Variable Substitution>${</Variable Substitution><Builtin Variable>PROJECT_NAME</Builtin Variable><Variable Substitution>}</Variable Substitution><Targets>.cc</Targets><Normal Text>)</Normal Text><br/>
<Normal Text> </Normal Text><Command>target_link_libraries</Command><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Variable Substitution>${</Variable Substitution><Builtin Variable>PROJECT_NAME</Builtin Variable><Variable Substitution>}</Variable Substitution><br/>
<Normal Text> </Normal Text><Targets>PRIVATE</Targets><br/>
<Normal Text> </Normal Text><Aliased Targets>Qt5::Core</Aliased Targets><br/>
<Normal Text> </Normal Text><Generator Expression>$<$<</Generator Expression><Generator Expression Keyword>BOOL</Generator Expression Keyword><Generator Expression>:</Generator Expression><Variable Substitution>${HAS_FOO}</Variable Substitution><Generator Expression>>:</Generator Expression><Aliased Targets>Foo::foo</Aliased Targets><Generator Expression>></Generator Expression><br/>
<Normal Text> )</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Control Flow>endif</Control Flow><Normal Text>()</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment># In each function call below, all 3 named parameter lines should apply the same highlighting.</Comment><br/>
<Command>add_custom_command</Command><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> </Normal Text><True Special Arg>true</True Special Arg><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> (</Normal Text><True Special Arg>true</True Special Arg><Normal Text>)</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> </Normal Text><True Special Arg>true</True Special Arg><br/>
<Normal Text>)</Normal Text><br/>
<Command>add_custom_target</Command><Normal Text>(</Normal Text><Targets>TargetName</Targets><br/>
<Normal Text> </Normal Text><Named Args>WORKING_DIRECTORY</Named Args><Normal Text> somedir</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> (</Normal Text><True Special Arg>true</True Special Arg><Normal Text>)</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>BYPRODUCTS</Named Args><Normal Text> somefile</Normal Text><br/>
<Normal Text>)</Normal Text><br/>
<Command>execute_process</Command><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> </Normal Text><True Special Arg>true</True Special Arg><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> (</Normal Text><True Special Arg>true</True Special Arg><Normal Text>)</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> </Normal Text><True Special Arg>true</True Special Arg><br/>
<Normal Text>)</Normal Text><br/>
<Command>add_test</Command><Normal Text>(</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>NAME</Named Args><Normal Text> sometest</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>COMMAND</Named Args><Normal Text> (</Normal Text><True Special Arg>true</True Special Arg><Normal Text>)</Normal Text><br/>
<Normal Text> </Normal Text><Named Args>WORKING_DIRECTORY</Named Args><Normal Text> somedir</Normal Text><br/>
<Normal Text>)</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment># nested parentheses</Comment><br/>
<Control Flow>if</Control Flow><Normal Text>( </Normal Text><True Special Arg>true</True Special Arg><Normal Text> </Normal Text><Named Args>AND</Named Args><Normal Text> ( </Normal Text><False Special Arg>false</False Special Arg><Normal Text> </Normal Text><Named Args>OR</Named Args><Normal Text> (</Normal Text><Strings>"</Strings><Variable Substitution>${</Variable Substitution><Builtin Variable>CMAKE_CXX_COMPILER_ID</Builtin Variable><Variable Substitution>}</Variable Substitution><Strings>"</Strings><Normal Text> </Normal Text><Named Args>STREQUAL</Named Args><Normal Text> </Normal Text><Strings>"Clang"</Strings><Normal Text>) ) )</Normal Text><br/>
<Control Flow>endif</Control Flow><Normal Text>()</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Control Flow>if</Control Flow><Normal Text>(</Normal Text><Named Args>NOT</Named Args><Normal Text> </Normal Text><Named Args>TARGET</Named Args><Normal Text> </Normal Text><Targets>Boost</Targets><Normal Text>::</Normal Text><Variable Substitution>${lib}</Variable Substitution><Normal Text>)</Normal Text><br/>
<Normal Text> </Normal Text><Command>add_library</Command><Normal Text>(</Normal Text><Targets>Boost</Targets><Normal Text>::</Normal Text><Variable Substitution>${lib}</Variable Substitution><Normal Text> </Normal Text><Named Args>INTERFACE</Named Args><Normal Text> </Normal Text><Named Args>IMPORTED</Named Args><Normal Text>)</Normal Text><br/>
<Control Flow>endif</Control Flow><Normal Text>()</Normal Text><br/>
|