aboutsummaryrefslogtreecommitdiff
path: root/tools/generate_ccls.py
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-07-16 00:08:07 +0800
committer杨宇千 <crupest@outlook.com>2019-07-16 00:08:07 +0800
commit12f33ce94953b47fb6a81d8941062116a8eab086 (patch)
tree88ac220560333175c0c5152b249b5ef2b0deb7e0 /tools/generate_ccls.py
parent8a1b313bac0b5ce6604f1e59e3cabd6faca5c098 (diff)
downloadcru-12f33ce94953b47fb6a81d8941062116a8eab086.tar.gz
cru-12f33ce94953b47fb6a81d8941062116a8eab086.tar.bz2
cru-12f33ce94953b47fb6a81d8941062116a8eab086.zip
...
Diffstat (limited to 'tools/generate_ccls.py')
-rw-r--r--tools/generate_ccls.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/generate_ccls.py b/tools/generate_ccls.py
new file mode 100644
index 00000000..fbd47711
--- /dev/null
+++ b/tools/generate_ccls.py
@@ -0,0 +1,53 @@
+import argparse
+import os
+import os.path
+
+parser = argparse.ArgumentParser()
+parser.add_argument('-d', '--debug', action='store_true',
+ default='Debug', help='specify build configuration')
+args = parser.parse_args()
+
+ccls_file_name = '.ccls'
+
+# project root dir
+project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+os.chdir(project_root)
+
+global_std_standard = 'c++17' # change this to change standard
+global_std_standard_arg = '--std={}'.format(global_std_standard)
+
+global_include_paths = [
+ os.path.abspath('include')
+]
+
+global_definitions = []
+
+if args.debug:
+ global_definitions.append('_DEBUG')
+
+
+def generate_ccls_content(additional_include_paths=[], additional_definitions=[]):
+ include_args = [
+ '-I{}'.format(path) for path in additional_include_paths + global_include_paths]
+ definition_args = [
+ '-D{}'.format(definition) for definition in additional_definitions + global_definitions]
+ args = [global_std_standard_arg] + include_args + definition_args
+ return '\n'.join(args)
+
+
+def generate_root_ccls():
+ with open(ccls_file_name, 'w') as f:
+ print(generate_ccls_content(), file=f)
+
+
+def generate_win_ccls_content():
+ return generate_ccls_content(additional_definitions=['UNICODE', '_UNICODE', 'WIN32', '_WINDOWS'])
+
+
+def generate_win_ccls():
+ for path in ['src/win/', 'include/cru/win/']:
+ with open(os.path.join(path, ccls_file_name), 'w') as f:
+ print(generate_win_ccls_content(), file=f)
+
+generate_root_ccls()
+generate_win_ccls()