From d5c852d329ac2fd5b0ef8cd2d672054e5c348336 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Wed, 15 Jul 2015 19:34:10 +0300 Subject: [PATCH] Project generator for CLion IDE // Resolve #132 --- docs/_static/ide-platformio-clion.png | Bin 0 -> 58127 bytes docs/ide.rst | 1 + docs/ide/clion.rst | 47 ++++ platformio/ide/projectgenerator.py | 25 +- platformio/ide/tpls/clion/.idea/clion.iml.tpl | 8 + .../ide/tpls/clion/.idea/modules.xml.tpl | 9 + .../ide/tpls/clion/.idea/platformio.iml.tpl | 8 + .../ide/tpls/clion/.idea/workspace.xml.tpl | 266 ++++++++++++++++++ platformio/ide/tpls/clion/CMakeLists.txt.tpl | 31 ++ 9 files changed, 388 insertions(+), 7 deletions(-) create mode 100644 docs/_static/ide-platformio-clion.png create mode 100644 docs/ide/clion.rst create mode 100644 platformio/ide/tpls/clion/.idea/clion.iml.tpl create mode 100644 platformio/ide/tpls/clion/.idea/modules.xml.tpl create mode 100644 platformio/ide/tpls/clion/.idea/platformio.iml.tpl create mode 100644 platformio/ide/tpls/clion/.idea/workspace.xml.tpl create mode 100644 platformio/ide/tpls/clion/CMakeLists.txt.tpl diff --git a/docs/_static/ide-platformio-clion.png b/docs/_static/ide-platformio-clion.png new file mode 100644 index 0000000000000000000000000000000000000000..11f0754f7edfe20eaa046d6293189982bb0e389f GIT binary patch literal 58127 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 is a cross-platform C/C++ IDE +for Linux, OS X, and Windows integrated with the CMake build system. The +initial version will support the GCC and Clang compilers and GDB debugger. +Clion includes such features as a smart editor, code quality assurance, +automated refactorings, project manager, integrated version control systems. + +This software can be used with: + +* all available :ref:`platforms` +* all available :ref:`frameworks` + +Refer to the `CDT Documentation `_ +page for more detailed information. + +.. contents:: + +Integration +----------- + +Project Generator +^^^^^^^^^^^^^^^^^ + +Since PlatformIO 2.0 you can generate CLion compatible project using +:option:`platformio init --ide` command. Please choose board type using +:ref:`cmd_boards` command and run: + +.. code-block:: shell + + platformio init --ide clion --board %TYPE% + +Then import this project from start menu or via ``File > Import Project>`` and specify root directory where is located. + +:ref:`projectconf` + +.. warning:: + CLion is still in the development stage, so some of the features probably will not work with PlatformIO + +Screenshot +---------- + +.. image:: ../_static/ide-platformio-clion.png + :target: http://docs.platformio.org/en/latest/_static/ide-platformio-clion.png diff --git a/platformio/ide/projectgenerator.py b/platformio/ide/projectgenerator.py index 2d6dbcc6..1720e467 100644 --- a/platformio/ide/projectgenerator.py +++ b/platformio/ide/projectgenerator.py @@ -2,8 +2,7 @@ # See LICENSE for details. import json -from glob import glob -from os import listdir, walk +from os import listdir, makedirs, walk from os.path import abspath, basename, expanduser, isdir, join, relpath import bottle @@ -76,14 +75,26 @@ class ProjectGenerator(object): return result def get_tpls(self): + tpls = [] tpls_dir = join(util.get_source_dir(), "ide", "tpls", self.ide) - return glob(join(tpls_dir, ".*.tpl")) + glob(join(tpls_dir, "*.tpl")) + for root, _, files in walk(tpls_dir): + for f in files: + if f.endswith(".tpl"): + tpls.append(( + root.replace(tpls_dir, ""), join(root, f))) + return tpls def generate(self): - for tpl_path in self.get_tpls(): - file_name = basename(tpl_path)[:-4] - with open(join(self.project_dir, file_name), "w") as f: - f.write(self._render_tpl(tpl_path).encode("utf8")) + for _relpath, _path in self.get_tpls(): + tpl_dir = self.project_dir + if _relpath: + tpl_dir = join(self.project_dir, _relpath)[1:] + if not isdir(tpl_dir): + makedirs(tpl_dir) + + file_name = basename(_path)[:-4] + with open(join(tpl_dir, file_name), "w") as f: + f.write(self._render_tpl(_path).encode("utf8")) def _render_tpl(self, tpl_path): content = "" diff --git a/platformio/ide/tpls/clion/.idea/clion.iml.tpl b/platformio/ide/tpls/clion/.idea/clion.iml.tpl new file mode 100644 index 00000000..bc2cd874 --- /dev/null +++ b/platformio/ide/tpls/clion/.idea/clion.iml.tpl @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/platformio/ide/tpls/clion/.idea/modules.xml.tpl b/platformio/ide/tpls/clion/.idea/modules.xml.tpl new file mode 100644 index 00000000..9ce81f04 --- /dev/null +++ b/platformio/ide/tpls/clion/.idea/modules.xml.tpl @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/platformio/ide/tpls/clion/.idea/platformio.iml.tpl b/platformio/ide/tpls/clion/.idea/platformio.iml.tpl new file mode 100644 index 00000000..bc2cd874 --- /dev/null +++ b/platformio/ide/tpls/clion/.idea/platformio.iml.tpl @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/platformio/ide/tpls/clion/.idea/workspace.xml.tpl b/platformio/ide/tpls/clion/.idea/workspace.xml.tpl new file mode 100644 index 00000000..04b41db6 --- /dev/null +++ b/platformio/ide/tpls/clion/.idea/workspace.xml.tpl @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + % for file in srcfiles: + + + + + + + + + + + % end + + + + + true + + + + + + + + + + + + + + + + + C/C++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1435919971910 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platformio/ide/tpls/clion/CMakeLists.txt.tpl b/platformio/ide/tpls/clion/CMakeLists.txt.tpl new file mode 100644 index 00000000..9707347f --- /dev/null +++ b/platformio/ide/tpls/clion/CMakeLists.txt.tpl @@ -0,0 +1,31 @@ +cmake_minimum_required(VERSION 3.2) +project({{project_name}}) +% for include in includes: +% if include.startswith(user_home_dir): +include_directories("$ENV{HOME}{{include.replace(user_home_dir, '').replace("\\", "/")}}") +% else: +include_directories("{{include}}") +% end +% end + +% for define in defines: +add_definitions(-D{{define}}) +% end + +add_custom_target( + PLATFORMIO_BUILD ALL + COMMAND platformio -f run + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) + +add_custom_target( + PLATFORMIO_UPLOAD ALL + COMMAND platformio -f run --target upload + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) + +add_custom_target( + PLATFORMIO_CLEAN ALL + COMMAND platformio -f run --target clean + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) \ No newline at end of file