forked from Kamz1337/EE-Enhanced
-
Notifications
You must be signed in to change notification settings - Fork 0
/
t_generate_compilation_database.py
59 lines (50 loc) · 2.12 KB
/
t_generate_compilation_database.py
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
import glob
import json
import os
# Set compilations ids/version (useless)
CMAKE_CXX_STANDARD = "17"
CMAKE_CXX_COMPILER_ID = "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe"
CMAKE_CXX_COMPILER_VERSION = "19.40.33808.0"
# Common compilation options
common_compile_options = [
"-std=c++" + CMAKE_CXX_STANDARD,
"-Wall",
"-compilerandversion=" + CMAKE_CXX_COMPILER_VERSION,
"-Wmicrosoft",
"-Wno-invalid-token-paste",
"-Wno-unknown-pragmas",
"-Wno-unused-value",
"-fsyntax-only",
"-D_MT",
"-D_DLL",
"-DWIN32",
"-D_WINDOWS",
"-DCMAKE_INTDIR=\"/Debug/\"",
"-D_DEBUG_FUNCTIONAL_MACHINERY"
]
# Add each include directory to the compilation options
ALL_INCLUDE_DIR = [os.getcwd() + "/include/"]
common_compile_options.extend(['-I"' + include_dir + '"' for include_dir in ALL_INCLUDE_DIR])
# Convert the list to a string with spaces between the options
common_compile_options_string = " ".join(common_compile_options)
# Filter the source files to keep only .cpp and .hpp files
PROJECT_SOURCE_DIR = os.getcwd()
SOURCES = glob.glob(PROJECT_SOURCE_DIR + '/**/*.c', recursive=True) + \
glob.glob(PROJECT_SOURCE_DIR + '/**/*.cpp', recursive=True) + \
glob.glob(PROJECT_SOURCE_DIR + '/**/*.hpp', recursive=True) + \
glob.glob(PROJECT_SOURCE_DIR + '/**/*.h', recursive=True)
sources = [source for source in SOURCES if source.endswith(('.c', '.h'))]
# Create compilation database entries
compile_commands = []
for source_file in sources:
compile_command = {
"directory": str(PROJECT_SOURCE_DIR),
"command": "\"" + str(CMAKE_CXX_COMPILER_ID) + "\" -x c++ \"" + source_file + "\" " + common_compile_options_string,
"file": str(source_file)
}
compile_commands.append(compile_command)
# Write the compilation database to a JSON file
with open(os.path.join(PROJECT_SOURCE_DIR, "compile_commands.json"), "w") as f:
json.dump(compile_commands, f, indent=4)
# Print confirmation message
print("Compilation database generated successfully.")