Set up clangd for intellisense. Whoof, that was difficult.
This commit is contained in:
8
.clangd
Normal file
8
.clangd
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
InlayHints:
|
||||||
|
Enabled: Yes
|
||||||
|
DeducedTypes: Yes
|
||||||
|
ParameterNames: Yes
|
||||||
|
Designators: Yes
|
||||||
|
|
||||||
@@ -36,10 +36,18 @@
|
|||||||
"**/x86_64-linux-gnu/**": "cpp",
|
"**/x86_64-linux-gnu/**": "cpp",
|
||||||
"*.ipp": "cpp",
|
"*.ipp": "cpp",
|
||||||
"*.inc": "cpp"
|
"*.inc": "cpp"
|
||||||
}
|
},
|
||||||
|
"C_Cpp.intelliSenseEngine": "disabled",
|
||||||
|
"clangd.path": "/usr/bin/clangd-15",
|
||||||
|
"clangd.arguments": [
|
||||||
|
"--compile-commands-dir=[INTEGRATION]/.vscode",
|
||||||
|
"--header-insertion=never"
|
||||||
|
],
|
||||||
|
"C_Cpp.autocomplete": "Disabled"
|
||||||
},
|
},
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
|
"llvm-vs-code-extensions.vscode-clangd",
|
||||||
"vadimcn.vscode-lldb",
|
"vadimcn.vscode-lldb",
|
||||||
"dfarley1.file-picker",
|
"dfarley1.file-picker",
|
||||||
"ms-python.python",
|
"ms-python.python",
|
||||||
@@ -73,6 +81,16 @@
|
|||||||
},
|
},
|
||||||
"problemMatcher": "$msCompile",
|
"problemMatcher": "$msCompile",
|
||||||
"type": "shell"
|
"type": "shell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Make Intellisense",
|
||||||
|
"group": "build",
|
||||||
|
"command": "make intellisense",
|
||||||
|
"presentation": {
|
||||||
|
"clear": true
|
||||||
|
},
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "shell"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,11 +2,26 @@
|
|||||||
#
|
#
|
||||||
# Do not edit Makefile, instead, edit Makefile.tpl.txt
|
# Do not edit Makefile, instead, edit Makefile.tpl.txt
|
||||||
#
|
#
|
||||||
|
# It is not usually necessary to rebuild the intellisense database
|
||||||
|
# unless you've added a source file.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
all:
|
all:
|
||||||
(cd luprex ; make all)
|
(cd luprex ; make all)
|
||||||
[UNREALENGINE]/Engine/Build/BatchFiles/[BUILD_BAT] IntegrationEditor [OS] DebugGame [INTEGRATION]/Integration.uproject -waitmutex
|
[UNREALENGINE]/Engine/Build/BatchFiles/[BUILD_BAT] -waitmutex IntegrationEditor [OS] DebugGame [INTEGRATION]/Integration.uproject
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
(cd luprex ; make clean)
|
(cd luprex ; make clean)
|
||||||
[UNREALENGINE]/Engine/Build/BatchFiles/[BUILD_BAT] IntegrationEditor [OS] DebugGame [INTEGRATION]/Integration.uproject -waitmutex -clean
|
[UNREALENGINE]/Engine/Build/BatchFiles/[BUILD_BAT] -waitmutex IntegrationEditor [OS] DebugGame [INTEGRATION]/Integration.uproject -clean
|
||||||
|
rm -f .vscode/compile_commands.json
|
||||||
|
|
||||||
|
intellisense: all
|
||||||
|
(cd [INTEGRATION] ; find Intermediate -type f -name '*.rsp' -print0 | tar --null -czf rsp_files.tgz --files-from=-)
|
||||||
|
(cd [UNREALENGINE] ; find Engine -type f -name '*.rsp' -print0 | tar --null -czf rsp_files.tgz --files-from=-)
|
||||||
|
[UNREALENGINE]/Engine/Build/BatchFiles/[BUILD_BAT] -waitmutex UnrealEditor [OS] DebugGame -mode=GenerateClangDatabase -OutputDir=[UNREALENGINE]/.vscode
|
||||||
|
[UNREALENGINE]/Engine/Build/BatchFiles/[BUILD_BAT] -waitmutex IntegrationEditor [OS] DebugGame [INTEGRATION]/Integration.uproject -mode=GenerateClangDatabase -OutputDir=[UNREALENGINE]/.vscode
|
||||||
|
cat [UNREALENGINE]/.vscode/compile_commands.json >> [INTEGRATION]/.vscode/compile_commands.json
|
||||||
|
(cd [INTEGRATION] ; tar xfz rsp_files.tgz)
|
||||||
|
(cd [UNREALENGINE] ; tar xfz rsp_files.tgz)
|
||||||
|
rm -f [INTEGRATION]/rsp_files.tgz [UNREALENGINE]/rsp_files.tgz
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ Install important Software
|
|||||||
- install git-lfs support. Usually: apt-get install git-lfs
|
- install git-lfs support. Usually: apt-get install git-lfs
|
||||||
- install visual studio code. Usually: apt-get install code
|
- install visual studio code. Usually: apt-get install code
|
||||||
- install dotnet6. Usually: apt-get install dotnet6
|
- install dotnet6. Usually: apt-get install dotnet6
|
||||||
|
- install clangd-15. Usually: apt-get install clangd-15
|
||||||
|
- install jq. On Linux, this is usually already installed.
|
||||||
- install python3. On Linux, this is usually already installed.
|
- install python3. On Linux, this is usually already installed.
|
||||||
|
|
||||||
Git Clone the UnrealEngine repository:
|
Git Clone the UnrealEngine repository:
|
||||||
@@ -25,11 +27,6 @@ Git Clone the integration Repository
|
|||||||
Apply patches and build everything:
|
Apply patches and build everything:
|
||||||
- Change directory to $HOME/integration
|
- Change directory to $HOME/integration
|
||||||
- python3 build-everything.py
|
- python3 build-everything.py
|
||||||
-
|
|
||||||
- Note: build-everything is mainly intended for the *initial* build.
|
|
||||||
- If you want to edit the code and recompile, it is okay to use
|
|
||||||
- build-everything.py a second time, but it's unnecessarily slow.
|
|
||||||
- It's much faster to edit and recompile using visual studio code.
|
|
||||||
|
|
||||||
Launch Integration in the Debugger
|
Launch Integration in the Debugger
|
||||||
- Change directory to $HOME/integration
|
- Change directory to $HOME/integration
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ else:
|
|||||||
|
|
||||||
CONFIG["INTEGRATION"] = os.path.dirname(os.path.abspath(sys.argv[0]))
|
CONFIG["INTEGRATION"] = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||||
CONFIG["UNREALENGINE"] = os.path.join(os.path.dirname(CONFIG["INTEGRATION"]), "UnrealEngine")
|
CONFIG["UNREALENGINE"] = os.path.join(os.path.dirname(CONFIG["INTEGRATION"]), "UnrealEngine")
|
||||||
|
CONFIG["UE_BUILD_BAT"] = CONFIG["UNREALENGINE"] + "/Engine/Build/BatchFiles/" + CONFIG["BUILD_BAT"] + " -waitmutex"
|
||||||
|
|
||||||
globals().update(CONFIG)
|
globals().update(CONFIG)
|
||||||
|
|
||||||
@@ -72,9 +73,7 @@ if not os.path.isdir(f"{UNREALENGINE}/Engine/Source/Editor"):
|
|||||||
|
|
||||||
#
|
#
|
||||||
# This is the code for a simple json preprocessor that can
|
# This is the code for a simple json preprocessor that can
|
||||||
# expand "for-each" loops and substitute variables. Because
|
# expand "for-each" loops and substitute variables.
|
||||||
# a single string is valid json, you can also use this to
|
|
||||||
# substitute variables in a string or a text file.
|
|
||||||
#
|
#
|
||||||
|
|
||||||
JSON_VAR_REGEX = re.compile(r'\[([A-Z0-9_]+)\]')
|
JSON_VAR_REGEX = re.compile(r'\[([A-Z0-9_]+)\]')
|
||||||
@@ -105,6 +104,11 @@ def expand_json_file(sourcefile, outputfile):
|
|||||||
expanded = expand_json(data, CONFIG)
|
expanded = expand_json(data, CONFIG)
|
||||||
Path(outputfile).write_text(json.dumps(expanded, indent=4))
|
Path(outputfile).write_text(json.dumps(expanded, indent=4))
|
||||||
|
|
||||||
|
#
|
||||||
|
# Because a single string is valid json, we can also use the json
|
||||||
|
# expander to substitute variables in plain old text files.
|
||||||
|
#
|
||||||
|
|
||||||
def expand_text_file(sourcefile, outputfile):
|
def expand_text_file(sourcefile, outputfile):
|
||||||
Path(outputfile).unlink(missing_ok=True)
|
Path(outputfile).unlink(missing_ok=True)
|
||||||
data = Path(sourcefile).read_text()
|
data = Path(sourcefile).read_text()
|
||||||
@@ -207,13 +211,14 @@ expand_json_file(f"{INTEGRATION}/Integration.code-workspace.tpl.json",
|
|||||||
expand_text_file(f"{INTEGRATION}/Makefile.tpl.txt",
|
expand_text_file(f"{INTEGRATION}/Makefile.tpl.txt",
|
||||||
f"{INTEGRATION}/Makefile")
|
f"{INTEGRATION}/Makefile")
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build ShaderCompileWorker
|
# Build ShaderCompileWorker
|
||||||
#
|
#
|
||||||
|
|
||||||
print("Building ShaderCompileWorker...")
|
print("Building ShaderCompileWorker...")
|
||||||
shell(UNREALENGINE, f"{UNREALENGINE}/Engine/Build/BatchFiles/{BUILD_BAT} ShaderCompileWorker {OS} Shipping -waitmutex")
|
|
||||||
|
shell(UNREALENGINE, f"{UNREALENGINE}/Engine/Build/BatchFiles/{BUILD_BAT} -waitmutex ShaderCompileWorker {OS} Shipping")
|
||||||
|
|
||||||
Path(f"Engine/Binaries/{OS}/ShaderCompileWorker{DOT_EXE}").unlink(missing_ok=True)
|
Path(f"Engine/Binaries/{OS}/ShaderCompileWorker{DOT_EXE}").unlink(missing_ok=True)
|
||||||
shutil.copyfile(f"{UNREALENGINE}/Engine/Binaries/{OS}/ShaderCompileWorker-{OS}-Shipping{DOT_EXE}", f"{UNREALENGINE}/Engine/Binaries/{OS}/ShaderCompileWorker{DOT_EXE}")
|
shutil.copyfile(f"{UNREALENGINE}/Engine/Binaries/{OS}/ShaderCompileWorker-{OS}-Shipping{DOT_EXE}", f"{UNREALENGINE}/Engine/Binaries/{OS}/ShaderCompileWorker{DOT_EXE}")
|
||||||
|
|
||||||
@@ -221,5 +226,5 @@ shutil.copyfile(f"{UNREALENGINE}/Engine/Binaries/{OS}/ShaderCompileWorker-{OS}-S
|
|||||||
# Run Make
|
# Run Make
|
||||||
#
|
#
|
||||||
|
|
||||||
shell(INTEGRATION, 'make')
|
shell(INTEGRATION, 'make intellisense')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user