diff --git a/tools/export/qtcreator/__init__.py b/tools/export/qtcreator/__init__.py index 49b5b7f929..4b344fa6cf 100644 --- a/tools/export/qtcreator/__init__.py +++ b/tools/export/qtcreator/__init__.py @@ -30,32 +30,36 @@ class QtCreator(Exporter): def generate(self): self.resources.win_to_unix() - with open("%s.creator" % self.project_name, "w") as fd: - fd.write("[General]\n") + defines = [] # list of tuples ('D'/'U', [key, value]) (value is optional) + forced_includes = [] # list of strings + sources = [] # list of strings + include_paths = [] # list of strings next_is_include = False - includes = [] - with open("%s.config" % self.project_name, "w") as fd: - for f in self.flags['c_flags'] + self.flags['cxx_flags']: - f=f.strip() - if next_is_include: - includes.append(f) - next_is_include = False - continue - if f.startswith('-D'): - fd.write("#define %s\n" % (f[2:].replace('=', ' '))) - elif f.startswith('-U'): - fd.write("#undef %s\n" % f[2:]) - elif f == "-include": - next_is_include = True - for i in includes: - fd.write("#include \"%s\"\n" % i) + for f in self.flags['c_flags'] + self.flags['cxx_flags']: + f=f.strip() + if next_is_include: + forced_includes.append(f) + next_is_include = False + continue + if f.startswith('-D'): + defines.append(('D', f[2:].split('=', 1))) + elif f.startswith('-U'): + defines.append(('U', [f[2:]])) + elif f == "-include": + next_is_include = True - with open("%s.files" % self.project_name, "w") as fd: - for r_type in ['headers', 'c_sources', 's_sources', 'cpp_sources']: - for f in getattr(self.resources, r_type): - fd.write(f + "\n") + for r_type in ['headers', 'c_sources', 's_sources', 'cpp_sources']: + sources.extend(getattr(self.resources, r_type)) - with open("%s.includes" % self.project_name, "w") as fd: - for i in self.resources.inc_dirs: - fd.write(i + "\n") + include_paths = self.resources.inc_dirs + + ctx = { + 'defines': defines, + 'forced_includes': forced_includes, + 'sources': sources, + 'include_paths': self.resources.inc_dirs + } + + for ext in ['creator', 'files', 'includes', 'config']: + self.gen_file('qtcreator/%s.tmpl' % ext, ctx, "%s.%s" % (self.project_name, ext)) diff --git a/tools/export/qtcreator/config.tmpl b/tools/export/qtcreator/config.tmpl new file mode 100644 index 0000000000..00b6cd686e --- /dev/null +++ b/tools/export/qtcreator/config.tmpl @@ -0,0 +1,6 @@ +{% for d in defines -%} +{% if d[0] == 'D' %}#define {% else %}#undef{% endif %} {{ d[1]|join(' ')}} +{% endfor %} +{% for i in forced_includes -%} +#include "{{i}}" +{% endfor %} diff --git a/tools/export/qtcreator/creator.tmpl b/tools/export/qtcreator/creator.tmpl new file mode 100644 index 0000000000..e94cbbd302 --- /dev/null +++ b/tools/export/qtcreator/creator.tmpl @@ -0,0 +1 @@ +[General] diff --git a/tools/export/qtcreator/files.tmpl b/tools/export/qtcreator/files.tmpl new file mode 100644 index 0000000000..1b034bbcef --- /dev/null +++ b/tools/export/qtcreator/files.tmpl @@ -0,0 +1,3 @@ +{% for s in sources -%} +{{s}} +{% endfor %} diff --git a/tools/export/qtcreator/includes.tmpl b/tools/export/qtcreator/includes.tmpl new file mode 100644 index 0000000000..3b6b8759a2 --- /dev/null +++ b/tools/export/qtcreator/includes.tmpl @@ -0,0 +1,3 @@ +{% for i in include_paths -%} +{{i}} +{% endfor %}