1 This is how we exclude in the .iml files
2 For example in example-nbody.iml
3 ```xml
4 <module>
5 <component name="NewModuleRootManager" inherit-compiler-output="true">
6 <exclude-output />
7 <content url="file://$MODULE_DIR$/../examples/nbody">
8 <sourceFolder url="file://$MODULE_DIR$/../examples/nbody/src/main/java" isTestSource="false" />
9 <sourceFolder url="file://$MODULE_DIR$/../examples/nbody/src/main/resources" type="java-resource" />
10 <!--<excludeFolder url="file://$MODULE_DIR$/../examples/nbody/src/main/java/nbody" />-->
11 </component>
12 </module>
13 ```
14 Sadly to exclude a single file we have to go to
15 ```
16 IntelliJ>Settings>Build, Execution, Deployment> Compiler>Excludes
17
18 And add to the UI
19 FULL_PATH_TO_HAT/hat/wraps/opengl/src/main/java/wrap/opengl/GLCallbackEventHandler.java
20 ```
21
22
23 We need these to be able to run in a run configuration
24 ```
25 RunConfiguration
26 VMOptions
27 -XstartOnFirstThread (on mac only for nbody/opengl)
28 --enable-native-access=ALL-UNNAMED
29 -Djava.library.path=FULL_PATH_TO_HAT/build
30
31 WorkingDirectory
32 FULL_PATH_TO_HAT/wraps/opengl/src/main/java/wrap/opengl/GLCallbackEventHandler.java
33 /Users/grfrost/github/babylon-grfrost-fork/hat/intellij
34
35 Assuming Working dir is
36 FULL_PATH_TO_HAT/intellij
37
38 ```
39
40 Note that run configs are held in `intellij/.idea/workspace.xml`
41
42 I tend to add them manually.
43 ```xml
44 <project version="4">
45 // other components
46 <component name="RunManager">
47 <configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
48 <classpathModifications>
49 <entry path="$PROJECT_DIR$/../build/hat-backend-ffi-opencl-1.0.jar" />
50 <entry path="$PROJECT_DIR$/backend_ffi_shared.iml" />
51 </classpathModifications>
52 <option name="MAIN_CLASS_NAME" value="nbody.Main" />
53 <module name="example_nbody" />
54 <option name="VM_PARAMETERS" value="-XstartOnFirstThread --enable-native-access=ALL-UNNAMED -Djava.library.path=../build" />
55 <extension name="coverage">
56 <pattern>
57 <option name="PATTERN" value="nbody.*" />
58 <option name="ENABLED" value="true" />
59 </pattern>
60 </extension>
61 <method v="2">
62 <option name="Make" enabled="true" />
63 </method>
64 </configuration>
65 <recent_temporary>
66 <list>
67 <item itemvalue="Application.Main" />
68 </list>
69 </recent_temporary>
70 </component>
71 </project>
72 ```
73
74