Feature/cmake migration #1
No files matched your search
+85
-17
@@ -67,11 +67,68 @@ jobs:
|
||||
echo "Is Release: ${{ steps.version.outputs.is-release }}"
|
||||
echo "Tag: ${{ steps.version.outputs.tag }}"
|
||||
|
||||
test:
|
||||
name: Run Unit Tests
|
||||
cmake-build:
|
||||
name: CMake Build and Test
|
||||
runs-on: ubuntu-latest
|
||||
needs: version
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup CMake
|
||||
uses: jwlawson/actions-setup-cmake@v1.13
|
||||
with:
|
||||
cmake-version: '4.1.0'
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Install PlatformIO
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install platformio==${{ env.PLATFORMIO_VERSION }}
|
||||
|
||||
- name: Cache PlatformIO packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.platformio
|
||||
~/.cache/pip
|
||||
key: ${{ runner.os }}-pio-${{ hashFiles('**/platformio.ini') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pio-
|
||||
|
||||
- name: Configure CMake
|
||||
working-directory: ./code/RocketLauncher
|
||||
run: |
|
||||
cmake --preset default
|
||||
|
||||
- name: Build CMake Project
|
||||
working-directory: ./code/RocketLauncher
|
||||
run: |
|
||||
cmake --build . --preset default
|
||||
|
||||
- name: Run CMake Tests
|
||||
working-directory: ./code/RocketLauncher
|
||||
run: |
|
||||
ctest --preset default --output-on-failure
|
||||
|
||||
- name: Upload CMake test results
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: cmake-test-results
|
||||
path: ./code/RocketLauncher/build/
|
||||
retention-days: 30
|
||||
|
||||
test:
|
||||
name: Run PlatformIO Unit Tests
|
||||
runs-on: ubuntu-latest
|
||||
needs: [version, cmake-build]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
@@ -96,23 +153,23 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pio-
|
||||
|
||||
- name: Run Unit Tests
|
||||
- name: Run PlatformIO Unit Tests
|
||||
working-directory: ./code/RocketLauncher
|
||||
run: |
|
||||
pio test -e native
|
||||
|
||||
- name: Upload test results
|
||||
- name: Upload PlatformIO test results
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: test-results
|
||||
name: platformio-test-results
|
||||
path: ./code/RocketLauncher/.pio/test/native/
|
||||
retention-days: 30
|
||||
|
||||
build-simulation:
|
||||
name: Build Simulation Firmware
|
||||
runs-on: ubuntu-latest
|
||||
needs: [version, test]
|
||||
needs: [version, cmake-build, test]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -164,7 +221,7 @@ jobs:
|
||||
build-hardware:
|
||||
name: Build Hardware Firmware
|
||||
runs-on: ubuntu-latest
|
||||
needs: [version, test]
|
||||
needs: [version, cmake-build, test]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -204,8 +261,6 @@ jobs:
|
||||
./code/RocketLauncher/.pio/build/uno_hw/firmware.elf
|
||||
retention-days: 90
|
||||
|
||||
|
||||
|
||||
create-tag:
|
||||
name: Create Git Tag
|
||||
runs-on: ubuntu-latest
|
||||
@@ -262,9 +317,10 @@ jobs:
|
||||
## 🚀 Luke's Rocket Launcher v${{ needs.version.outputs.version }}
|
||||
|
||||
### What's New
|
||||
- Automated build and testing
|
||||
- Automated build and testing with CMake
|
||||
- Pre-compiled firmware for Arduino and SimulIDE
|
||||
- Comprehensive unit test coverage
|
||||
- Modern CMake build system for IDE integration
|
||||
|
||||
### Downloads
|
||||
- **Simulation Firmware**: For SimulIDE testing
|
||||
@@ -279,6 +335,7 @@ jobs:
|
||||
- **Version**: ${{ needs.version.outputs.version }}
|
||||
- **Build Date**: ${{ github.event.head_commit.timestamp }}
|
||||
- **Commit**: ${{ github.sha }}
|
||||
- **Build System**: CMake + PlatformIO
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
@@ -367,7 +424,7 @@ jobs:
|
||||
### For Hardware
|
||||
1. Download the package
|
||||
2. Use Arduino IDE or PlatformIO to upload `firmware/hardware/firmware.hex`
|
||||
3. Or use `make upload` from the project directory
|
||||
3. Or use `./scripts/build.sh upload` from the project directory
|
||||
|
||||
### For Simulation
|
||||
1. Download the package
|
||||
@@ -380,6 +437,7 @@ jobs:
|
||||
- **Built on**: ${{ github.event.head_commit.timestamp }}
|
||||
- **Commit**: ${{ github.sha }}
|
||||
- **Platform**: ${{ runner.os }}
|
||||
- **Build System**: CMake + PlatformIO
|
||||
|
||||
## 📚 Documentation
|
||||
- [Project README](https://github.com/KofTwentyTwo/Lukes-Rocket-Launcher#readme)
|
||||
@@ -406,7 +464,7 @@ jobs:
|
||||
build-status:
|
||||
name: Build Status Report
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test, build-simulation, build-hardware]
|
||||
needs: [cmake-build, test, build-simulation, build-hardware]
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
@@ -422,10 +480,16 @@ jobs:
|
||||
echo "**Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
if [ "${{ needs.test.result }}" == "success" ]; then
|
||||
echo "✅ **Tests:** PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
if [ "${{ needs.cmake-build.result }}" == "success" ]; then
|
||||
echo "✅ **CMake Build:** SUCCESS" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **Tests:** FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
echo "❌ **CMake Build:** FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
if [ "${{ needs.test.result }}" == "success" ]; then
|
||||
echo "✅ **PlatformIO Tests:** PASSED" >> $GITHUB_STEP_SUMMARY
|
||||
else
|
||||
echo "❌ **PlatformIO Tests:** FAILED" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
|
||||
if [ "${{ needs.build-simulation.result }}" == "success" ]; then
|
||||
@@ -441,6 +505,7 @@ jobs:
|
||||
fi
|
||||
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Build System:** CMake + PlatformIO" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Firmware files are available as artifacts above.**" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
publish-package:
|
||||
@@ -503,7 +568,9 @@ jobs:
|
||||
"launcher",
|
||||
"firmware",
|
||||
"simulide",
|
||||
"3d-printing"
|
||||
"3d-printing",
|
||||
"cmake",
|
||||
"platformio"
|
||||
],
|
||||
"author": "KofTwentyTwo",
|
||||
"license": "MIT",
|
||||
@@ -556,7 +623,7 @@ jobs:
|
||||
### For Hardware
|
||||
1. Download the package
|
||||
2. Use Arduino IDE or PlatformIO to upload \`firmware/hardware/firmware.hex\`
|
||||
3. Or use \`make upload\` from the project directory
|
||||
3. Or use \`./scripts/build.sh upload\` from the project directory
|
||||
|
||||
### For Simulation
|
||||
1. Download the package
|
||||
@@ -569,6 +636,7 @@ jobs:
|
||||
- **Built on**: ${{ github.event.head_commit.timestamp }}
|
||||
- **Commit**: ${{ github.sha }}
|
||||
- **Platform**: ${{ runner.os }}
|
||||
- **Build System**: CMake + PlatformIO
|
||||
|
||||
## 📚 Documentation
|
||||
- [Project README](https://github.com/KofTwentyTwo/Lukes-Rocket-Launcher#readme)
|
||||
|
||||
@@ -53,3 +53,4 @@ dkms.conf
|
||||
|
||||
# debug information files
|
||||
*.dwo
|
||||
/code/RocketLauncher/.pio/
|
||||
File renamed without changes.
Generated
+1
@@ -0,0 +1 @@
|
||||
RocketLauncher
|
||||
Generated
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module classpath="CMake" type="CPP_MODULE" version="4" />
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CMakeSharedSettings">
|
||||
<configurations>
|
||||
<configuration PROFILE_NAME="Debug" ENABLED="true" CONFIG_NAME="Debug" GENERATION_OPTIONS="-G Ninja" />
|
||||
</configurations>
|
||||
</component>
|
||||
</project>
|
||||
Generated
File renamed without changes.
Generated
+16
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CMakePythonSetting">
|
||||
<option name="pythonIntegrationState" value="YES" />
|
||||
</component>
|
||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$/code/RocketLauncher">
|
||||
<contentRoot DIR="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="CidrRootsConfiguration">
|
||||
<excludeRoots>
|
||||
<file path="$PROJECT_DIR$/code/RocketLauncher/.pio" />
|
||||
<file path="$PROJECT_DIR$/code/RocketLauncher/.venv" />
|
||||
<file path="$PROJECT_DIR$/code/RocketLauncher/.vscode" />
|
||||
</excludeRoots>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/Lukes-Rocket-Launcher.iml" filepath="$PROJECT_DIR$/.idea/Lukes-Rocket-Launcher.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,2 +1,70 @@
|
||||
.pio
|
||||
build
|
||||
# CMake build directories
|
||||
build/
|
||||
build-*/
|
||||
out/
|
||||
|
||||
# CMake generated files
|
||||
CMakeCache.txt
|
||||
CMakeFiles/
|
||||
cmake_install.cmake
|
||||
Makefile
|
||||
*.cmake
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
rocket_tests
|
||||
|
||||
# Arduino specific
|
||||
*.hex
|
||||
*.elf
|
||||
*.eep
|
||||
*.lss
|
||||
*.map
|
||||
*.sym
|
||||
|
||||
# IDE files
|
||||
.vscode/settings.json
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS generated files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
*.tmp
|
||||
|
||||
# Unity test framework
|
||||
lib/Unity/
|
||||
external/Unity/
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<RiderCodeStyleSettings>
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="true" type="bool" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/ExecutableToUse/@EntryValue" value="Custom" type="string" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/ExternalClangFormatPath/@EntryValue" value="/opt/homebrew/bin/clang-format" type="string" />
|
||||
</RiderCodeStyleSettings>
|
||||
<clangFormatSettings>
|
||||
<option name="ENABLED" value="true" />
|
||||
</clangFormatSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
@@ -1,5 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
||||
-437
@@ -1,437 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DBNavigator.Project.DDLFileAttachmentManager">
|
||||
<mappings />
|
||||
<preferences />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseAssistantManager">
|
||||
<assistants />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||
<open-files />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.Settings">
|
||||
<connections />
|
||||
<browser-settings>
|
||||
<general>
|
||||
<display-mode value="TABBED" />
|
||||
<navigation-history-size value="100" />
|
||||
<show-object-details value="false" />
|
||||
<enable-sticky-paths value="true" />
|
||||
<enable-quick-filters value="false" />
|
||||
</general>
|
||||
<filters>
|
||||
<object-type-filter>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="true" />
|
||||
<object-type name="ROLE" enabled="true" />
|
||||
<object-type name="PRIVILEGE" enabled="true" />
|
||||
<object-type name="CHARSET" enabled="true" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="JSON_VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||
<object-type name="NESTED_TABLE" enabled="true" />
|
||||
<object-type name="COLUMN" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="true" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||
<object-type name="ARGUMENT" enabled="true" />
|
||||
<object-type name="JAVA_CLASS" enabled="true" />
|
||||
<object-type name="JAVA_FIELD" enabled="true" />
|
||||
<object-type name="JAVA_METHOD" enabled="true" />
|
||||
<object-type name="JAVA_RESOURCE" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="true" />
|
||||
<object-type name="CLUSTER" enabled="true" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
<object-type name="CREDENTIAL" enabled="true" />
|
||||
<object-type name="AI_PROFILE" enabled="true" />
|
||||
</object-type-filter>
|
||||
</filters>
|
||||
<sorting>
|
||||
<object-type name="COLUMN" sorting-type="NAME" />
|
||||
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||
<object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" />
|
||||
</sorting>
|
||||
<default-editors>
|
||||
<object-type name="VIEW" editor-type="SELECTION" />
|
||||
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||
<object-type name="TYPE" editor-type="SELECTION" />
|
||||
</default-editors>
|
||||
</browser-settings>
|
||||
<navigation-settings>
|
||||
<lookup-filters>
|
||||
<lookup-objects>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="false" />
|
||||
<object-type name="ROLE" enabled="false" />
|
||||
<object-type name="PRIVILEGE" enabled="false" />
|
||||
<object-type name="CHARSET" enabled="false" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="JSON VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="false" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="JAVA CLASS" enabled="true" />
|
||||
<object-type name="INNER CLASS" enabled="true" />
|
||||
<object-type name="JAVA FIELD" enabled="true" />
|
||||
<object-type name="JAVA METHOD" enabled="true" />
|
||||
<object-type name="JAVA PARAMETER" enabled="true" />
|
||||
<object-type name="JAVA RESOURCE" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="false" />
|
||||
<object-type name="CLUSTER" enabled="false" />
|
||||
<object-type name="DBLINK" enabled="false" />
|
||||
<object-type name="CREDENTIAL" enabled="false" />
|
||||
</lookup-objects>
|
||||
<force-database-load value="false" />
|
||||
<prompt-connection-selection value="true" />
|
||||
<prompt-schema-selection value="true" />
|
||||
</lookup-filters>
|
||||
</navigation-settings>
|
||||
<dataset-grid-settings>
|
||||
<general>
|
||||
<enable-zooming value="true" />
|
||||
<enable-column-tooltip value="true" />
|
||||
</general>
|
||||
<sorting>
|
||||
<nulls-first value="true" />
|
||||
<max-sorting-columns value="4" />
|
||||
</sorting>
|
||||
<audit-columns>
|
||||
<column-names value="" />
|
||||
<visible value="true" />
|
||||
<editable value="false" />
|
||||
</audit-columns>
|
||||
</dataset-grid-settings>
|
||||
<dataset-editor-settings>
|
||||
<text-editor-popup>
|
||||
<active value="false" />
|
||||
<active-if-empty value="false" />
|
||||
<data-length-threshold value="100" />
|
||||
<popup-delay value="1000" />
|
||||
</text-editor-popup>
|
||||
<values-actions-popup>
|
||||
<show-popup-button value="true" />
|
||||
<element-count-threshold value="1000" />
|
||||
<data-length-threshold value="250" />
|
||||
</values-actions-popup>
|
||||
<general>
|
||||
<fetch-block-size value="100" />
|
||||
<fetch-timeout value="30" />
|
||||
<trim-whitespaces value="true" />
|
||||
<convert-empty-strings-to-null value="true" />
|
||||
<select-content-on-cell-edit value="true" />
|
||||
<large-value-preview-active value="true" />
|
||||
</general>
|
||||
<filters>
|
||||
<prompt-filter-dialog value="true" />
|
||||
<default-filter-type value="BASIC" />
|
||||
</filters>
|
||||
<qualified-text-editor text-length-threshold="300">
|
||||
<content-types>
|
||||
<content-type name="Text" enabled="true" />
|
||||
<content-type name="XML" enabled="true" />
|
||||
<content-type name="DTD" enabled="true" />
|
||||
<content-type name="HTML" enabled="true" />
|
||||
<content-type name="XHTML" enabled="true" />
|
||||
<content-type name="CSS" enabled="true" />
|
||||
<content-type name="SQL" enabled="true" />
|
||||
<content-type name="PL/SQL" enabled="true" />
|
||||
<content-type name="JavaScript" enabled="true" />
|
||||
<content-type name="JSON" enabled="true" />
|
||||
<content-type name="JSON5" enabled="true" />
|
||||
<content-type name="YAML" enabled="true" />
|
||||
</content-types>
|
||||
</qualified-text-editor>
|
||||
<record-navigation>
|
||||
<navigation-target value="VIEWER" />
|
||||
</record-navigation>
|
||||
</dataset-editor-settings>
|
||||
<code-editor-settings>
|
||||
<general>
|
||||
<show-object-navigation-gutter value="false" />
|
||||
<show-spec-declaration-navigation-gutter value="true" />
|
||||
<enable-spellchecking value="true" />
|
||||
<enable-reference-spellchecking value="false" />
|
||||
</general>
|
||||
<confirmations>
|
||||
<save-changes value="false" />
|
||||
<revert-changes value="true" />
|
||||
<exit-on-changes value="ASK" />
|
||||
</confirmations>
|
||||
</code-editor-settings>
|
||||
<code-completion-settings>
|
||||
<filters>
|
||||
<basic-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="json view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="false" />
|
||||
<filter-element type="OBJECT" id="view" selected="false" />
|
||||
<filter-element type="OBJECT" id="json view" selected="false" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||
<filter-element type="OBJECT" id="index" selected="false" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||
<filter-element type="OBJECT" id="function" selected="false" />
|
||||
<filter-element type="OBJECT" id="package" selected="false" />
|
||||
<filter-element type="OBJECT" id="type" selected="false" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="json view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</basic-filter>
|
||||
<extended-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="json view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="json view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="json view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</extended-filter>
|
||||
</filters>
|
||||
<sorting enabled="true">
|
||||
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||
<sorting-element type="OBJECT" id="column" />
|
||||
<sorting-element type="OBJECT" id="table" />
|
||||
<sorting-element type="OBJECT" id="view" />
|
||||
<sorting-element type="OBJECT" id="json view" />
|
||||
<sorting-element type="OBJECT" id="materialized view" />
|
||||
<sorting-element type="OBJECT" id="index" />
|
||||
<sorting-element type="OBJECT" id="constraint" />
|
||||
<sorting-element type="OBJECT" id="trigger" />
|
||||
<sorting-element type="OBJECT" id="synonym" />
|
||||
<sorting-element type="OBJECT" id="sequence" />
|
||||
<sorting-element type="OBJECT" id="procedure" />
|
||||
<sorting-element type="OBJECT" id="function" />
|
||||
<sorting-element type="OBJECT" id="package" />
|
||||
<sorting-element type="OBJECT" id="type" />
|
||||
<sorting-element type="OBJECT" id="dimension" />
|
||||
<sorting-element type="OBJECT" id="cluster" />
|
||||
<sorting-element type="OBJECT" id="dblink" />
|
||||
<sorting-element type="OBJECT" id="schema" />
|
||||
<sorting-element type="OBJECT" id="role" />
|
||||
<sorting-element type="OBJECT" id="user" />
|
||||
<sorting-element type="RESERVED_WORD" id="function" />
|
||||
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||
</sorting>
|
||||
<format>
|
||||
<enforce-code-style-case value="true" />
|
||||
</format>
|
||||
</code-completion-settings>
|
||||
<execution-engine-settings>
|
||||
<statement-execution>
|
||||
<fetch-block-size value="100" />
|
||||
<execution-timeout value="20" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<focus-result value="false" />
|
||||
<prompt-execution value="false" />
|
||||
</statement-execution>
|
||||
<script-execution>
|
||||
<command-line-interfaces />
|
||||
<execution-timeout value="300" />
|
||||
</script-execution>
|
||||
<method-execution>
|
||||
<execution-timeout value="30" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<parameter-history-size value="10" />
|
||||
</method-execution>
|
||||
</execution-engine-settings>
|
||||
<operation-settings>
|
||||
<transactions>
|
||||
<uncommitted-changes>
|
||||
<on-project-close value="ASK" />
|
||||
<on-disconnect value="ASK" />
|
||||
<on-autocommit-toggle value="ASK" />
|
||||
</uncommitted-changes>
|
||||
<multiple-uncommitted-changes>
|
||||
<on-commit value="ASK" />
|
||||
<on-rollback value="ASK" />
|
||||
</multiple-uncommitted-changes>
|
||||
</transactions>
|
||||
<session-browser>
|
||||
<disconnect-session value="ASK" />
|
||||
<kill-session value="ASK" />
|
||||
<reload-on-filter-change value="false" />
|
||||
</session-browser>
|
||||
<compiler>
|
||||
<compile-type value="KEEP" />
|
||||
<compile-dependencies value="ASK" />
|
||||
<always-show-controls value="false" />
|
||||
</compiler>
|
||||
</operation-settings>
|
||||
<ddl-file-settings>
|
||||
<extensions>
|
||||
<mapping file-type-id="VIEW" extensions="vw" />
|
||||
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||
<mapping file-type-id="JAVA_SOURCE" extensions="sql" />
|
||||
</extensions>
|
||||
<general>
|
||||
<lookup-ddl-files value="true" />
|
||||
<create-ddl-files value="false" />
|
||||
<synchronize-ddl-files value="true" />
|
||||
<use-qualified-names value="false" />
|
||||
<make-scripts-rerunnable value="true" />
|
||||
</general>
|
||||
</ddl-file-settings>
|
||||
<assistant-settings>
|
||||
<credential-settings>
|
||||
<credentials />
|
||||
</credential-settings>
|
||||
</assistant-settings>
|
||||
<general-settings>
|
||||
<regional-settings>
|
||||
<date-format value="MEDIUM" />
|
||||
<number-format value="UNGROUPED" />
|
||||
<locale value="SYSTEM_DEFAULT" />
|
||||
<use-custom-formats value="false" />
|
||||
</regional-settings>
|
||||
<environment>
|
||||
<environment-types>
|
||||
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||
</environment-types>
|
||||
<visibility-settings>
|
||||
<connection-tabs value="true" />
|
||||
<dialog-headers value="true" />
|
||||
<object-editor-tabs value="true" />
|
||||
<script-editor-tabs value="false" />
|
||||
<execution-result-tabs value="true" />
|
||||
</visibility-settings>
|
||||
</environment>
|
||||
</general-settings>
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,8 +0,0 @@
|
||||
<component name="ProjectDictionaryState">
|
||||
<dictionary name="project">
|
||||
<words>
|
||||
<w>simulide</w>
|
||||
<w>thomasfredericks</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
Generated
-251
@@ -1,251 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BackendCodeEditorSettings">
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedOverridenMethod/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppModulePartitionWithSeveralPartitionUnits/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantFwdClassOrEnumSpecifier/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifierADL/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="true" type="bool" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/ExecutableToUse/@EntryValue" value="Custom" type="string" />
|
||||
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/ExternalClangFormatPath/@EntryValue" value="/opt/homebrew/bin/clang-format" type="string" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
-29
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.9 (RocketLauncher)" />
|
||||
</component>
|
||||
<component name="CMakePythonSetting">
|
||||
<option name="pythonIntegrationState" value="YES" />
|
||||
</component>
|
||||
<component name="CidrRootsConfiguration">
|
||||
<excludeRoots>
|
||||
<file path="$PROJECT_DIR$/.pio" />
|
||||
<file path="$PROJECT_DIR$/.venv" />
|
||||
</excludeRoots>
|
||||
</component>
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="PlatformIOSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<PlatformioProjectSettings>
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
</PlatformioProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
<component name="PlatformIOWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||
</project>
|
||||
@@ -0,0 +1,183 @@
|
||||
cmake_minimum_required(VERSION 4.1.0)
|
||||
project(RocketLauncher VERSION 1.0.0 LANGUAGES CXX)
|
||||
|
||||
# Set C++ standard
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# Options
|
||||
option(BUILD_TESTS "Build unit tests" ON)
|
||||
option(ENABLE_FORMATTING "Enable code formatting" ON)
|
||||
option(PLATFORMIO_INTEGRATION "Enable PlatformIO integration" ON)
|
||||
|
||||
# Set output directories
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
|
||||
# Include cmake modules
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
# Find required packages (PkgConfig not needed for this project)
|
||||
|
||||
# Source files (for testing and documentation)
|
||||
set(SOURCES
|
||||
src/RocketController.cpp
|
||||
)
|
||||
|
||||
set(HEADERS
|
||||
src/ArduinoInterface.h
|
||||
src/RocketController.h
|
||||
)
|
||||
|
||||
# Tests (native only - Arduino builds handled by PlatformIO)
|
||||
if(BUILD_TESTS)
|
||||
enable_testing()
|
||||
|
||||
# Test executable (excludes main.cpp and Arduino-specific code)
|
||||
add_executable(rocket_tests
|
||||
test/test_rocket_controller.cpp
|
||||
src/RocketController.cpp
|
||||
)
|
||||
|
||||
# Test configuration (same as PlatformIO native env)
|
||||
target_compile_definitions(rocket_tests PRIVATE
|
||||
ARDUINO=0
|
||||
UNITY_INCLUDE_DOUBLE
|
||||
UNITY_DOUBLE_PRECISION=1e-12
|
||||
UNITY_INCLUDE_CONFIG_H
|
||||
)
|
||||
|
||||
# Compiler flags (same as PlatformIO native env)
|
||||
target_compile_options(rocket_tests PRIVATE
|
||||
-std=c++17
|
||||
-Wall -Wextra -Wpedantic
|
||||
)
|
||||
|
||||
# Add tests
|
||||
add_test(NAME RocketControllerTests COMMAND rocket_tests)
|
||||
endif()
|
||||
|
||||
# PlatformIO integration targets (these become proper CMake targets for CLion)
|
||||
if(PLATFORMIO_INTEGRATION)
|
||||
# Find PlatformIO
|
||||
find_program(PLATFORMIO "pio")
|
||||
|
||||
if(PLATFORMIO)
|
||||
# Main firmware targets that CLion will see
|
||||
add_custom_target(firmware_sim ALL
|
||||
COMMAND ${PLATFORMIO} run -e simulide
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Building simulation firmware with PlatformIO"
|
||||
SOURCES ${SOURCES} ${HEADERS}
|
||||
)
|
||||
|
||||
add_custom_target(firmware_hw ALL
|
||||
COMMAND ${PLATFORMIO} run -e uno_hw
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Building hardware firmware with PlatformIO"
|
||||
SOURCES ${SOURCES} ${HEADERS}
|
||||
)
|
||||
|
||||
# Test target that CLion will see
|
||||
add_custom_target(pio_tests
|
||||
COMMAND ${PLATFORMIO} test -e native
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Running PlatformIO tests"
|
||||
SOURCES ${SOURCES} ${HEADERS}
|
||||
)
|
||||
|
||||
# Utility targets
|
||||
add_custom_target(upload
|
||||
COMMAND ${PLATFORMIO} run -e uno_hw -t upload
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Uploading firmware to Arduino with PlatformIO"
|
||||
DEPENDS firmware_hw
|
||||
)
|
||||
|
||||
add_custom_target(monitor
|
||||
COMMAND ${PLATFORMIO} device monitor -b 115200
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Starting serial monitor with PlatformIO"
|
||||
)
|
||||
|
||||
# Clean target
|
||||
add_custom_target(pio_clean
|
||||
COMMAND ${PLATFORMIO} run -t clean
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Cleaning PlatformIO build files"
|
||||
)
|
||||
|
||||
# Combined build target (what CLion will see as the main target)
|
||||
add_custom_target(all_firmware ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Building all firmware targets..."
|
||||
COMMAND ${PLATFORMIO} run -e simulide
|
||||
COMMAND ${PLATFORMIO} run -e uno_hw
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Building both simulation and hardware firmware with PlatformIO"
|
||||
SOURCES ${SOURCES} ${HEADERS}
|
||||
DEPENDS firmware_sim firmware_hw
|
||||
)
|
||||
|
||||
# Set dependencies so CLion understands the build order
|
||||
if(BUILD_TESTS)
|
||||
add_dependencies(rocket_tests all_firmware)
|
||||
endif()
|
||||
|
||||
message(STATUS "PlatformIO integration enabled - CMake targets created for CLion")
|
||||
else()
|
||||
message(WARNING "PlatformIO not found. Install with: pip install platformio")
|
||||
message(WARNING "Firmware targets will not be available")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Code formatting
|
||||
if(ENABLE_FORMATTING)
|
||||
find_program(CLANG_FORMAT "clang-format")
|
||||
if(CLANG_FORMAT)
|
||||
add_custom_target(format
|
||||
COMMAND ${CLANG_FORMAT} -i ${SOURCES} ${HEADERS}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Formatting source code with clang-format"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Custom targets
|
||||
add_custom_target(clean-all
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Cleaning all CMake build files"
|
||||
)
|
||||
|
||||
# Help target
|
||||
add_custom_target(show_help
|
||||
COMMAND ${CMAKE_COMMAND} --help
|
||||
COMMENT "Showing CMake help"
|
||||
)
|
||||
|
||||
# Status target
|
||||
add_custom_target(status
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Project: ${PROJECT_NAME}"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Version: ${PROJECT_VERSION}"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Build directory: ${CMAKE_BINARY_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Source directory: ${CMAKE_SOURCE_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo ""
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "PlatformIO integration: ${PLATFORMIO_INTEGRATION}"
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Tests enabled: ${BUILD_TESTS}"
|
||||
COMMENT "Showing project status"
|
||||
)
|
||||
|
||||
# Install rules (for tests only)
|
||||
if(BUILD_TESTS)
|
||||
install(TARGETS rocket_tests
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
endif()
|
||||
|
||||
# Package configuration
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"displayName": "Default Configuration",
|
||||
"description": "Default build configuration with tests and PlatformIO integration",
|
||||
"generator": "Unix Makefiles",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"BUILD_TESTS": "ON",
|
||||
"PLATFORMIO_INTEGRATION": "ON",
|
||||
"ENABLE_FORMATTING": "ON"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "release",
|
||||
"displayName": "Release Configuration",
|
||||
"description": "Release build configuration optimized for production",
|
||||
"generator": "Unix Makefiles",
|
||||
"binaryDir": "${sourceDir}/build-release",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"BUILD_TESTS": "OFF",
|
||||
"PLATFORMIO_INTEGRATION": "ON",
|
||||
"ENABLE_FORMATTING": "OFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tests-only",
|
||||
"displayName": "Tests Only",
|
||||
"description": "Build only unit tests (no PlatformIO integration)",
|
||||
"generator": "Unix Makefiles",
|
||||
"binaryDir": "${sourceDir}/build-tests",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"BUILD_TESTS": "ON",
|
||||
"PLATFORMIO_INTEGRATION": "OFF",
|
||||
"ENABLE_FORMATTING": "ON"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "minimal",
|
||||
"displayName": "Minimal Configuration",
|
||||
"description": "Minimal build with no tests or PlatformIO integration",
|
||||
"generator": "Unix Makefiles",
|
||||
"binaryDir": "${sourceDir}/build-minimal",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"BUILD_TESTS": "OFF",
|
||||
"PLATFORMIO_INTEGRATION": "OFF",
|
||||
"ENABLE_FORMATTING": "OFF"
|
||||
}
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"configurePreset": "default",
|
||||
"targets": ["all"]
|
||||
},
|
||||
{
|
||||
"name": "release",
|
||||
"configurePreset": "release",
|
||||
"targets": ["all"]
|
||||
},
|
||||
{
|
||||
"name": "tests",
|
||||
"configurePreset": "tests-only",
|
||||
"targets": ["rocket_tests"]
|
||||
},
|
||||
{
|
||||
"name": "minimal",
|
||||
"configurePreset": "minimal",
|
||||
"targets": ["all"]
|
||||
},
|
||||
{
|
||||
"name": "clean",
|
||||
"configurePreset": "default",
|
||||
"targets": ["clean"]
|
||||
},
|
||||
{
|
||||
"name": "firmware-sim",
|
||||
"configurePreset": "default",
|
||||
"targets": ["firmware_sim"]
|
||||
},
|
||||
{
|
||||
"name": "firmware-hw",
|
||||
"configurePreset": "default",
|
||||
"targets": ["firmware_hw"]
|
||||
},
|
||||
{
|
||||
"name": "all-firmware",
|
||||
"configurePreset": "default",
|
||||
"targets": ["all_firmware"]
|
||||
},
|
||||
{
|
||||
"name": "upload",
|
||||
"configurePreset": "default",
|
||||
"targets": ["upload"]
|
||||
},
|
||||
{
|
||||
"name": "monitor",
|
||||
"configurePreset": "default",
|
||||
"targets": ["monitor"]
|
||||
},
|
||||
{
|
||||
"name": "pio-clean",
|
||||
"configurePreset": "default",
|
||||
"targets": ["pio_clean"]
|
||||
}
|
||||
],
|
||||
"testPresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"configurePreset": "default"
|
||||
},
|
||||
{
|
||||
"name": "quick",
|
||||
"configurePreset": "tests-only"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
# 🚀 Luke's Rocket Launch Controller - Makefile
|
||||
# Simple build system for Arduino-based rocket launcher
|
||||
|
||||
# Project Configuration
|
||||
PROJECT_NAME = RocketLauncher
|
||||
BUILD_DIR = .pio
|
||||
OUT_DIR = out
|
||||
|
||||
# PlatformIO Configuration
|
||||
PIO_CMD = pio
|
||||
PIO_ENV_SIM = simulide
|
||||
PIO_ENV_HW = uno_hw
|
||||
|
||||
# Default target
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
# Colors for pretty output
|
||||
GREEN = \033[0;32m
|
||||
YELLOW = \033[1;33m
|
||||
RED = \033[0;31m
|
||||
BLUE = \033[0;34m
|
||||
NC = \033[0m # No Color
|
||||
|
||||
# Help target
|
||||
.PHONY: help
|
||||
help: ## Show this help message
|
||||
@echo "$(GREEN)🚀 Luke's Rocket Launch Controller - Build System$(NC)"
|
||||
@echo ""
|
||||
@echo "$(BLUE)Available targets:$(NC)"
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(YELLOW)%-15s$(NC) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
@echo ""
|
||||
@echo "$(BLUE)Quick start:$(NC)"
|
||||
@echo " make # Run tests and build everything (default)"
|
||||
@echo " make build-only # Build everything (skip tests)"
|
||||
@echo " make test # Run unit tests"
|
||||
@echo " make build-sim # Build for simulation"
|
||||
@echo " make build-hw # Build for hardware"
|
||||
@echo " make clean # Clean build files"
|
||||
|
||||
# Build targets
|
||||
.PHONY: all
|
||||
all: test build ## Run tests and build for both simulation and hardware
|
||||
|
||||
.PHONY: build-only
|
||||
build-only: build ## Build for both simulation and hardware (skip tests)
|
||||
|
||||
.PHONY: build-sim
|
||||
build-sim: ## Build project for SimulIDE simulation
|
||||
@echo "$(GREEN)🔧 Building for simulation...$(NC)"
|
||||
@$(PIO_CMD) run -e $(PIO_ENV_SIM)
|
||||
@echo "$(GREEN)✅ Simulation build complete!$(NC)"
|
||||
@echo "$(BLUE) Firmware: $(OUT_DIR)/simulide/firmware.hex$(NC)"
|
||||
|
||||
.PHONY: build-hw
|
||||
build-hw: ## Build project for Arduino hardware
|
||||
@echo "$(GREEN)🔧 Building for hardware...$(NC)"
|
||||
@$(PIO_CMD) run -e $(PIO_ENV_HW)
|
||||
@echo "$(GREEN)✅ Hardware build complete!$(NC)"
|
||||
@echo "$(BLUE) Firmware: $(BUILD_DIR)/$(PIO_ENV_HW)/firmware.hex$(NC)"
|
||||
|
||||
.PHONY: build
|
||||
build: build-sim build-hw ## Build for both simulation and hardware
|
||||
|
||||
# Test targets
|
||||
.PHONY: test
|
||||
test: ## Run unit tests
|
||||
@echo "$(GREEN)🧪 Running unit tests...$(NC)"
|
||||
@$(PIO_CMD) test -e native
|
||||
@echo "$(GREEN)✅ Tests completed!$(NC)"
|
||||
|
||||
.PHONY: test-verbose
|
||||
test-verbose: ## Run tests with verbose output
|
||||
@echo "$(GREEN)🧪 Running verbose tests...$(NC)"
|
||||
@$(PIO_CMD) test --verbose
|
||||
@echo "$(GREEN)✅ Verbose tests completed!$(NC)"
|
||||
|
||||
# Cleanup targets
|
||||
.PHONY: clean
|
||||
clean: ## Clean build artifacts
|
||||
@echo "$(YELLOW)🧹 Cleaning build files...$(NC)"
|
||||
@$(PIO_CMD) run -t clean
|
||||
@rm -rf $(OUT_DIR)
|
||||
@echo "$(GREEN)✅ Clean complete!$(NC)"
|
||||
|
||||
.PHONY: clean-all
|
||||
clean-all: ## Clean everything including dependencies
|
||||
@echo "$(YELLOW)🧹 Deep cleaning...$(NC)"
|
||||
@$(PIO_CMD) run -t clean
|
||||
@rm -rf $(BUILD_DIR)
|
||||
@rm -rf $(OUT_DIR)
|
||||
@echo "$(GREEN)✅ Deep clean complete!$(NC)"
|
||||
|
||||
# Upload targets
|
||||
.PHONY: upload
|
||||
upload: build-hw ## Upload firmware to Arduino
|
||||
@echo "$(GREEN)🚀 Uploading to Arduino...$(NC)"
|
||||
@$(PIO_CMD) run -e $(PIO_ENV_HW) -t upload
|
||||
@echo "$(GREEN)✅ Upload complete!$(NC)"
|
||||
|
||||
.PHONY: upload-sim
|
||||
upload-sim: build-sim ## Build and prepare for SimulIDE
|
||||
@echo "$(GREEN)🎮 Preparing for SimulIDE simulation...$(NC)"
|
||||
@echo "$(BLUE) Open wiring/rocker_launcher_controls.sim1 in SimulIDE$(NC)"
|
||||
@echo "$(BLUE) Firmware will auto-load from: $(OUT_DIR)/simulide/firmware.hex$(NC)"
|
||||
|
||||
# Development targets
|
||||
.PHONY: monitor
|
||||
monitor: ## Monitor Arduino serial output
|
||||
@echo "$(GREEN)📡 Starting serial monitor...$(NC)"
|
||||
@$(PIO_CMD) device monitor -b 115200
|
||||
|
||||
.PHONY: format
|
||||
format: ## Format source code with clang-format
|
||||
@echo "$(GREEN)🎨 Formatting source code...$(NC)"
|
||||
@if command -v clang-format >/dev/null 2>&1; then \
|
||||
clang-format -i src/**/*.cpp src/**/*.h lib/**/*.cpp lib/**/*.h 2>/dev/null || true; \
|
||||
echo "$(GREEN)✅ Code formatting complete!$(NC)"; \
|
||||
else \
|
||||
echo "$(YELLOW)⚠️ clang-format not found. Install clang-format to format code.$(NC)"; \
|
||||
echo "$(BLUE) macOS: brew install clang-format$(NC)"; \
|
||||
echo "$(BLUE) Ubuntu: sudo apt install clang-format$(NC)"; \
|
||||
fi
|
||||
|
||||
.PHONY: release
|
||||
release: ## Create a semantic versioned release
|
||||
@echo "$(GREEN)🏷️ Creating semantic release...$(NC)"
|
||||
@if [ -f "../../scripts/release.sh" ]; then \
|
||||
../../scripts/release.sh; \
|
||||
else \
|
||||
echo "$(YELLOW)⚠️ Release script not found. Please run from project root:$(NC)"; \
|
||||
echo "$(BLUE) make release$(NC)"; \
|
||||
fi
|
||||
|
||||
# Status
|
||||
.PHONY: status
|
||||
status: ## Show project status
|
||||
@echo "$(GREEN)📊 Project Status$(NC)"
|
||||
@echo "$(BLUE) Project: $(PROJECT_NAME)$(NC)"
|
||||
@echo "$(BLUE) Build dir: $(BUILD_DIR)$(NC)"
|
||||
@echo "$(BLUE) Output dir: $(OUT_DIR)$(NC)"
|
||||
@if [ -d "$(BUILD_DIR)" ]; then echo "$(GREEN) ✅ Build directory exists$(NC)"; else echo "$(RED) ❌ Build directory missing$(NC)"; fi
|
||||
@if [ -d "$(OUT_DIR)" ]; then echo "$(GREEN) ✅ Output directory exists$(NC)"; else echo "$(RED) ❌ Output directory missing$(NC)"; fi
|
||||
@@ -0,0 +1,361 @@
|
||||
# 🚀 Luke's Rocket Launch Controller
|
||||
|
||||
A modern Arduino-based rocket launcher controller built with **CMake** and **PlatformIO**.
|
||||
|
||||
## 🏗️ Build System
|
||||
|
||||
This project uses a **hybrid build approach** that gives you the best of both worlds:
|
||||
|
||||
- **CMake** - Primary build system for IDE integration (CLion, VS Code) and project management
|
||||
- **PlatformIO** - Arduino firmware building and library management
|
||||
- **Unity** - Unit testing framework for native development
|
||||
|
||||
### Key Benefits
|
||||
|
||||
- **CLion Tier 1 Support** - Full CMake integration for the best IDE experience
|
||||
- **Cross-platform compatibility** - Works on macOS, Linux, and Windows
|
||||
- **Multiple build configurations** - Presets for different use cases
|
||||
- **Modern C++ standards** - C++17 support with proper toolchain
|
||||
- **Maintainable architecture** - Standard CMake practices
|
||||
|
||||
## 📋 Prerequisites
|
||||
|
||||
### Required
|
||||
- **CMake 3.20+** - Modern build system
|
||||
- **Make** - Build tool (usually comes with CMake)
|
||||
- **C++17 compatible compiler** - For native builds and testing
|
||||
- **PlatformIO** - For Arduino development
|
||||
|
||||
### Optional
|
||||
- **SimulIDE** - For simulation testing
|
||||
- **clang-format** - For code formatting
|
||||
|
||||
### Installation
|
||||
|
||||
#### macOS
|
||||
```bash
|
||||
# Install CMake
|
||||
brew install cmake
|
||||
|
||||
# Install PlatformIO
|
||||
pip install platformio
|
||||
|
||||
# Install SimulIDE (optional)
|
||||
brew install --cask simulide
|
||||
|
||||
# Install clang-format (optional)
|
||||
brew install clang-format
|
||||
```
|
||||
|
||||
#### Ubuntu/Debian
|
||||
```bash
|
||||
# Install CMake and build tools
|
||||
sudo apt update
|
||||
sudo apt install cmake build-essential
|
||||
|
||||
# Install PlatformIO
|
||||
pip install platformio
|
||||
|
||||
# Install SimulIDE (optional)
|
||||
sudo apt install simulide
|
||||
|
||||
# Install clang-format (optional)
|
||||
sudo apt install clang-format
|
||||
```
|
||||
|
||||
#### Windows
|
||||
- Download and install [CMake](https://cmake.org/download/)
|
||||
- Install PlatformIO: `pip install platformio`
|
||||
- Download and install [SimulIDE](https://www.simulide.com/) (optional)
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### 1. Clone and Navigate
|
||||
```bash
|
||||
git clone <your-repo-url>
|
||||
cd RocketLauncher
|
||||
```
|
||||
|
||||
### 2. Build Everything
|
||||
```bash
|
||||
# Using the build script (recommended)
|
||||
./scripts/build.sh
|
||||
|
||||
# Or using CMake directly
|
||||
cmake --preset default
|
||||
cmake --build --preset default
|
||||
```
|
||||
|
||||
### 3. Run Tests
|
||||
```bash
|
||||
./scripts/build.sh test
|
||||
```
|
||||
|
||||
## 🛠️ Build Commands
|
||||
|
||||
### Using the Build Script (Recommended)
|
||||
|
||||
The `scripts/build.sh` script provides a familiar interface:
|
||||
|
||||
```bash
|
||||
# Full build (configure + build + test)
|
||||
./scripts/build.sh
|
||||
|
||||
# Configure only
|
||||
./scripts/build.sh configure
|
||||
|
||||
# Build only (assumes already configured)
|
||||
./scripts/build.sh build
|
||||
|
||||
# Run tests
|
||||
./scripts/build.sh test
|
||||
|
||||
# Clean build files
|
||||
./scripts/build.sh clean
|
||||
|
||||
# Build specific firmware
|
||||
./scripts/build.sh firmware-sim # Simulation firmware
|
||||
./scripts/build.sh firmware-hw # Hardware firmware
|
||||
./scripts/build.sh all-firmware # Both firmwares
|
||||
|
||||
# Arduino operations
|
||||
./scripts/build.sh upload # Upload to Arduino
|
||||
./scripts/build.sh monitor # Start serial monitor
|
||||
|
||||
# Utilities
|
||||
./scripts/build.sh format # Format source code
|
||||
./scripts/build.sh status # Show project status
|
||||
./scripts/build.sh help # Get help
|
||||
```
|
||||
|
||||
### Using CMake Directly
|
||||
|
||||
```bash
|
||||
# Configure with default preset
|
||||
cmake --preset default
|
||||
|
||||
# Build with default preset
|
||||
cmake --build --preset default
|
||||
|
||||
# Run tests
|
||||
ctest --preset default
|
||||
|
||||
# Build specific targets
|
||||
cmake --build . --target firmware_sim
|
||||
cmake --build . --target firmware_hw
|
||||
cmake --build . --target rocket_tests
|
||||
```
|
||||
|
||||
## ⚙️ Build Presets
|
||||
|
||||
The project includes several pre-configured build presets:
|
||||
|
||||
| Preset | Description | Tests | PlatformIO | Optimization |
|
||||
|--------|-------------|-------|------------|--------------|
|
||||
| `default` | Full development build | ✅ | ✅ | Debug |
|
||||
| `release` | Production build | ❌ | ✅ | Release |
|
||||
| `tests-only` | Unit tests only | ✅ | ❌ | Debug |
|
||||
| `minimal` | Minimal build | ❌ | ❌ | Debug |
|
||||
|
||||
### Using Presets
|
||||
|
||||
```bash
|
||||
# Configure with specific preset
|
||||
cmake --preset release
|
||||
|
||||
# Build with specific preset
|
||||
cmake --build --preset tests-only
|
||||
|
||||
# Using build script with preset
|
||||
./scripts/build.sh --preset release
|
||||
```
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
RocketLauncher/
|
||||
├── CMakeLists.txt # Main CMake configuration
|
||||
├── CMakePresets.json # Build presets for CLion
|
||||
├── platformio.ini # PlatformIO configuration
|
||||
├── cmake/ # CMake modules
|
||||
│ └── FindUnity.cmake # Unity test framework finder
|
||||
├── lib/Unity/ # Unity test framework
|
||||
│ ├── unity.h # Test framework header
|
||||
│ └── unity.cpp # Test framework implementation
|
||||
├── scripts/ # Build helper scripts
|
||||
│ └── build.sh # Main build script
|
||||
├── src/ # Source code
|
||||
│ ├── main.cpp # Arduino main program
|
||||
│ ├── RocketController.cpp # Rocket control logic
|
||||
│ ├── RocketController.h # Rocket control interface
|
||||
│ └── ArduinoInterface.h # Arduino abstraction
|
||||
├── test/ # Unit tests
|
||||
│ └── test_rocket_controller.cpp
|
||||
├── lib/ # External libraries
|
||||
├── include/ # Header files
|
||||
└── .vscode/ # VS Code configuration
|
||||
└── settings.json # Editor settings
|
||||
```
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- `ARDUINO_HOME` - Path to Arduino installation (optional, auto-detected)
|
||||
|
||||
### CMake Options
|
||||
|
||||
```bash
|
||||
# Configure with custom options
|
||||
cmake -DBUILD_TESTS=OFF -DPLATFORMIO_INTEGRATION=OFF ..
|
||||
|
||||
# Available options:
|
||||
# BUILD_TESTS - Enable/disable unit tests (default: ON)
|
||||
# PLATFORMIO_INTEGRATION - Enable/disable PlatformIO integration (default: ON)
|
||||
# ENABLE_FORMATTING - Enable/disable code formatting (default: ON)
|
||||
```
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
./scripts/build.sh test
|
||||
|
||||
# Run tests with verbose output
|
||||
ctest --preset default --output-on-failure
|
||||
|
||||
# Run specific test
|
||||
ctest --preset default -R RocketControllerTests
|
||||
```
|
||||
|
||||
### Test Framework
|
||||
|
||||
The project uses the **Unity test framework** for unit testing. Tests are automatically discovered and run during the build process.
|
||||
|
||||
## 📱 Arduino Development
|
||||
|
||||
### Building Firmware
|
||||
|
||||
```bash
|
||||
# Build for Arduino Uno
|
||||
./scripts/build.sh firmware-hw
|
||||
|
||||
# Build for simulation
|
||||
./scripts/build.sh firmware-sim
|
||||
|
||||
# Build both
|
||||
./scripts/build.sh all-firmware
|
||||
```
|
||||
|
||||
### Uploading to Arduino
|
||||
|
||||
```bash
|
||||
# Upload hardware firmware (requires Arduino connection)
|
||||
./scripts/build.sh upload
|
||||
```
|
||||
|
||||
**Note**: Upload functionality requires proper Arduino connection and may need configuration for your specific setup.
|
||||
|
||||
### Arduino Libraries
|
||||
|
||||
The project automatically includes these Arduino libraries via PlatformIO:
|
||||
- `LiquidCrystal` - LCD display support
|
||||
- `Bounce2` - Button debouncing
|
||||
|
||||
## 🎮 Simulation
|
||||
|
||||
### SimulIDE Integration
|
||||
|
||||
The simulation build creates firmware compatible with SimulIDE:
|
||||
|
||||
1. Build simulation firmware: `./scripts/build.sh firmware-sim`
|
||||
2. Open SimulIDE
|
||||
3. Load your simulation file (`.sim1`)
|
||||
4. Firmware will auto-load from the PlatformIO build output
|
||||
|
||||
## 🚀 Migration from Makefile
|
||||
|
||||
### Old Makefile Commands → New CMake Commands
|
||||
|
||||
| Old Makefile | New CMake | Description |
|
||||
|--------------|-----------|-------------|
|
||||
| `make all` | `./scripts/build.sh` | Full build |
|
||||
| `make build-only` | `./scripts/build.sh build` | Build only |
|
||||
| `make test` | `./scripts/build.sh test` | Run tests |
|
||||
| `make clean` | `./scripts/build.sh clean` | Clean build |
|
||||
| `make build-sim` | `./scripts/build.sh firmware-sim` | Simulation build |
|
||||
| `make build-hw` | `./scripts/build.sh firmware-hw` | Hardware build |
|
||||
| `make upload` | `./scripts/build.sh upload` | Upload to Arduino |
|
||||
| `make format` | `./scripts/build.sh format` | Format code |
|
||||
| `make status` | `./scripts/build.sh status` | Show status |
|
||||
|
||||
### Key Benefits of CMake
|
||||
|
||||
1. **Cross-platform**: Works on macOS, Linux, and Windows
|
||||
2. **IDE integration**: Better support in CLion, VS Code, etc.
|
||||
3. **Presets**: Multiple build configurations without reconfiguration
|
||||
4. **Modular**: Reusable build components
|
||||
5. **Standards**: Follows modern C++ build practices
|
||||
6. **Maintainable**: Easier to extend and modify
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### CMake not found
|
||||
```bash
|
||||
# Install CMake
|
||||
# macOS
|
||||
brew install cmake
|
||||
|
||||
# Ubuntu
|
||||
sudo apt install cmake
|
||||
|
||||
# Windows
|
||||
# Download from cmake.org
|
||||
```
|
||||
|
||||
#### PlatformIO not found
|
||||
```bash
|
||||
# Install PlatformIO
|
||||
pip install platformio
|
||||
```
|
||||
|
||||
#### Build failures
|
||||
```bash
|
||||
# Clean and rebuild
|
||||
./scripts/build.sh clean
|
||||
./scripts/build.sh
|
||||
|
||||
# Check dependencies
|
||||
./scripts/build.sh status
|
||||
```
|
||||
|
||||
### Getting Help
|
||||
|
||||
1. Check the project status: `./scripts/build.sh status`
|
||||
2. Verify dependencies are installed
|
||||
3. Check build logs in the build directory
|
||||
4. Ensure you're using CMake 3.20+
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Test with: `./scripts/build.sh test`
|
||||
5. Submit a pull request
|
||||
|
||||
## 📄 License
|
||||
|
||||
[Your License Here]
|
||||
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
- **Luke** - Original rocket launcher design
|
||||
- **Arduino community** - Hardware platform
|
||||
- **PlatformIO community** - Arduino development tools
|
||||
- **CMake community** - Build system
|
||||
- **Unity framework** - Testing framework
|
||||
Executable
+332
@@ -0,0 +1,332 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 🚀 Luke's Rocket Launch Controller - CMake Build Script
|
||||
# Modern build system for Arduino-based rocket launcher with PlatformIO integration
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for pretty output
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Project Configuration
|
||||
PROJECT_NAME="RocketLauncher"
|
||||
BUILD_DIR="build"
|
||||
DEFAULT_PRESET="default"
|
||||
|
||||
# Function to print colored output
|
||||
print_status() {
|
||||
echo -e "${GREEN}🔧 $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||||
}
|
||||
|
||||
# Function to show help
|
||||
show_help() {
|
||||
echo -e "${GREEN}🚀 Luke's Rocket Launch Controller - Build System${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Available commands:${NC}"
|
||||
echo " build.sh # Configure and build everything (default)"
|
||||
echo " build.sh configure # Configure CMake project"
|
||||
echo " build.sh build # Build project"
|
||||
echo " build.sh test # Run tests"
|
||||
echo " build.sh clean # Clean build files"
|
||||
echo " build.sh format # Format source code"
|
||||
echo " build.sh status # Show project status"
|
||||
echo ""
|
||||
echo -e "${BLUE}CMake targets (what CLion sees):${NC}"
|
||||
echo " build.sh firmware-sim # Build simulation firmware"
|
||||
echo " build.sh firmware-hw # Build hardware firmware"
|
||||
echo " build.sh all-firmware # Build both firmwares"
|
||||
echo " build.sh upload # Upload to Arduino"
|
||||
echo " build.sh monitor # Start serial monitor"
|
||||
echo " build.sh pio-clean # Clean PlatformIO files"
|
||||
echo ""
|
||||
echo -e "${BLUE}Build presets:${NC}"
|
||||
echo " default # Full build with tests and PlatformIO integration"
|
||||
echo " release # Optimized release build"
|
||||
echo " tests-only # Unit tests only (no PlatformIO)"
|
||||
echo " minimal # Minimal build (no tests, no PlatformIO)"
|
||||
echo ""
|
||||
echo -e "${BLUE}Examples:${NC}"
|
||||
echo " ./scripts/build.sh # Full build"
|
||||
echo " ./scripts/build.sh firmware-sim # Build simulation firmware"
|
||||
echo " ./scripts/build.sh --preset release # Release build"
|
||||
}
|
||||
|
||||
# Function to check dependencies
|
||||
check_dependencies() {
|
||||
print_status "Checking dependencies..."
|
||||
|
||||
if ! command -v cmake &> /dev/null; then
|
||||
print_error "CMake not found. Please install CMake 3.20 or later."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v make &> /dev/null; then
|
||||
print_error "Make not found. Please install Make."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for PlatformIO
|
||||
if ! command -v pio &> /dev/null; then
|
||||
print_warning "PlatformIO not found. Arduino builds will not work."
|
||||
print_info "Install with: pip install platformio"
|
||||
print_info "Or use: ./scripts/build.sh --preset tests-only"
|
||||
else
|
||||
print_status "PlatformIO found"
|
||||
fi
|
||||
|
||||
print_status "Dependencies check complete"
|
||||
}
|
||||
|
||||
# Function to configure project
|
||||
configure_project() {
|
||||
local preset=${1:-$DEFAULT_PRESET}
|
||||
print_status "Configuring project with preset: $preset"
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
cmake --preset "$preset" ..
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_status "Configuration successful"
|
||||
else
|
||||
print_error "Configuration failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
# Function to build project
|
||||
build_project() {
|
||||
local preset=${1:-$DEFAULT_PRESET}
|
||||
print_status "Building project with preset: $preset"
|
||||
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
print_warning "Build directory not found. Running configure first..."
|
||||
configure_project "$preset"
|
||||
fi
|
||||
|
||||
cd "$BUILD_DIR"
|
||||
# Build without preset since we're already in the configured build directory
|
||||
cmake --build .
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_status "Build successful"
|
||||
print_info "Output files in: $BUILD_DIR"
|
||||
else
|
||||
print_error "Build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
# Function to run tests
|
||||
run_tests() {
|
||||
print_status "Running tests..."
|
||||
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
print_warning "Build directory not found. Running configure first..."
|
||||
configure_project
|
||||
fi
|
||||
|
||||
cd "$BUILD_DIR"
|
||||
# Run tests without preset since we're already in the configured build directory
|
||||
ctest --output-on-failure
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_status "Tests completed successfully"
|
||||
else
|
||||
print_error "Tests failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
# Function to clean build files
|
||||
clean_build() {
|
||||
print_status "Cleaning build files..."
|
||||
|
||||
if [ -d "$BUILD_DIR" ]; then
|
||||
rm -rf "$BUILD_DIR"
|
||||
print_status "Build directory removed"
|
||||
fi
|
||||
|
||||
# Clean other build directories
|
||||
for dir in build-*; do
|
||||
if [ -d "$dir" ]; then
|
||||
rm -rf "$dir"
|
||||
print_status "Removed $dir"
|
||||
fi
|
||||
done
|
||||
|
||||
print_status "Clean complete"
|
||||
}
|
||||
|
||||
# Function to build specific CMake targets
|
||||
build_target() {
|
||||
local target=$1
|
||||
local description=$2
|
||||
|
||||
print_status "$description"
|
||||
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
print_warning "Build directory not found. Running configure first..."
|
||||
configure_project
|
||||
fi
|
||||
|
||||
cd "$BUILD_DIR"
|
||||
cmake --build . --target "$target"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_status "Target '$target' built successfully"
|
||||
else
|
||||
print_error "Target '$target' build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
# Function to format code
|
||||
format_code() {
|
||||
print_status "Formatting source code..."
|
||||
|
||||
if command -v clang-format &> /dev/null; then
|
||||
find src/ -name "*.cpp" -o -name "*.h" | xargs clang-format -i
|
||||
print_status "Code formatting complete"
|
||||
else
|
||||
print_warning "clang-format not found. Install clang-format to format code."
|
||||
print_info "macOS: brew install clang-format"
|
||||
print_info "Ubuntu: sudo apt install clang-format"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to show status
|
||||
show_status() {
|
||||
print_status "Project Status"
|
||||
print_info "Project: $PROJECT_NAME"
|
||||
print_info "Build directory: $BUILD_DIR"
|
||||
print_info "Source directory: $(pwd)"
|
||||
|
||||
if [ -d "$BUILD_DIR" ]; then
|
||||
print_info "✅ Build directory exists"
|
||||
|
||||
# Check for test executable
|
||||
if [ -f "$BUILD_DIR/rocket_tests" ]; then
|
||||
print_info "✅ Test executable exists"
|
||||
fi
|
||||
else
|
||||
print_warning "❌ Build directory missing"
|
||||
fi
|
||||
|
||||
# Check PlatformIO status
|
||||
if command -v pio &> /dev/null; then
|
||||
print_info "✅ PlatformIO found"
|
||||
|
||||
# Check PlatformIO project
|
||||
if [ -f "platformio.ini" ]; then
|
||||
print_info "✅ PlatformIO project configuration found"
|
||||
else
|
||||
print_warning "⚠️ PlatformIO project configuration not found"
|
||||
fi
|
||||
else
|
||||
print_warning "❌ PlatformIO not found"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main script logic
|
||||
main() {
|
||||
local command=${1:-"all"}
|
||||
local preset=${2:-$DEFAULT_PRESET}
|
||||
|
||||
case $command in
|
||||
"help"|"-h"|"--help")
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
"configure")
|
||||
check_dependencies
|
||||
configure_project "$preset"
|
||||
;;
|
||||
"build")
|
||||
check_dependencies
|
||||
build_project "$preset"
|
||||
;;
|
||||
"test")
|
||||
check_dependencies
|
||||
run_tests
|
||||
;;
|
||||
"clean")
|
||||
clean_build
|
||||
;;
|
||||
"format")
|
||||
format_code
|
||||
;;
|
||||
"status")
|
||||
show_status
|
||||
;;
|
||||
"firmware-sim")
|
||||
check_dependencies
|
||||
build_target "firmware_sim" "Building simulation firmware"
|
||||
;;
|
||||
"firmware-hw")
|
||||
check_dependencies
|
||||
build_target "firmware_hw" "Building hardware firmware"
|
||||
;;
|
||||
"all-firmware")
|
||||
check_dependencies
|
||||
build_target "all_firmware" "Building both firmwares"
|
||||
;;
|
||||
"upload")
|
||||
check_dependencies
|
||||
build_target "upload" "Building and uploading firmware"
|
||||
;;
|
||||
"monitor")
|
||||
check_dependencies
|
||||
build_target "monitor" "Starting serial monitor"
|
||||
;;
|
||||
"pio-clean")
|
||||
check_dependencies
|
||||
build_target "pio_clean" "Cleaning PlatformIO files"
|
||||
;;
|
||||
"all")
|
||||
check_dependencies
|
||||
configure_project "$preset"
|
||||
build_project "$preset"
|
||||
run_tests
|
||||
;;
|
||||
*)
|
||||
print_error "Unknown command: $command"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Handle preset argument
|
||||
if [[ "$1" == "--preset" ]]; then
|
||||
preset="$2"
|
||||
shift 2
|
||||
main "$1" "$preset"
|
||||
else
|
||||
main "$@"
|
||||
fi
|
||||
@@ -1,9 +1,103 @@
|
||||
#include <unity.h>
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
#include "../src/RocketController.h"
|
||||
#include "../src/ArduinoInterface.h"
|
||||
|
||||
// Minimal Unity test framework implementation for CMake builds
|
||||
// This avoids dependency on external Unity files
|
||||
namespace Unity {
|
||||
extern int unity_current_test_failed;
|
||||
extern int unity_number_of_tests;
|
||||
extern int unity_number_of_failures;
|
||||
|
||||
void unity_begin(const char* filename);
|
||||
void unity_end(void);
|
||||
void unity_run_test(void (*test_func)(void), const char* test_name);
|
||||
}
|
||||
|
||||
// Forward declarations for test setup/teardown
|
||||
void setUp(void);
|
||||
void tearDown(void);
|
||||
|
||||
// Unity test framework - minimal implementation for CMake integration
|
||||
int Unity::unity_current_test_failed = 0;
|
||||
int Unity::unity_number_of_tests = 0;
|
||||
int Unity::unity_number_of_failures = 0;
|
||||
|
||||
void Unity::unity_begin(const char* filename) {
|
||||
std::cout << "Unity Test Framework" << std::endl;
|
||||
std::cout << "===================" << std::endl;
|
||||
std::cout << "Running tests from: " << filename << std::endl << std::endl;
|
||||
|
||||
unity_current_test_failed = 0;
|
||||
unity_number_of_tests = 0;
|
||||
unity_number_of_failures = 0;
|
||||
}
|
||||
|
||||
void Unity::unity_end(void) {
|
||||
std::cout << std::endl << "===================" << std::endl;
|
||||
std::cout << "Test Results:" << std::endl;
|
||||
std::cout << "Tests Run: " << unity_number_of_tests << std::endl;
|
||||
std::cout << "Failures: " << unity_number_of_failures << std::endl;
|
||||
|
||||
if (unity_number_of_failures == 0) {
|
||||
std::cout << "All tests passed!" << std::endl;
|
||||
} else {
|
||||
std::cout << "Some tests failed!" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void Unity::unity_run_test(void (*test_func)(void), const char* test_name) {
|
||||
std::cout << "Running test: " << test_name << std::endl;
|
||||
|
||||
unity_current_test_failed = 0;
|
||||
|
||||
// Call setUp and tearDown if they exist
|
||||
setUp();
|
||||
test_func();
|
||||
tearDown();
|
||||
|
||||
if (unity_current_test_failed) {
|
||||
std::cout << " ❌ FAILED" << std::endl;
|
||||
} else {
|
||||
std::cout << " ✅ PASSED" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Unity test macros
|
||||
#define TEST_ASSERT(condition) \
|
||||
do { \
|
||||
if (!(condition)) { \
|
||||
Unity::unity_current_test_failed = 1; \
|
||||
Unity::unity_number_of_failures++; \
|
||||
} \
|
||||
Unity::unity_number_of_tests++; \
|
||||
} while(0)
|
||||
|
||||
#define TEST_ASSERT_EQUAL(expected, actual) \
|
||||
TEST_ASSERT((expected) == (actual))
|
||||
|
||||
#define TEST_ASSERT_TRUE(condition) \
|
||||
TEST_ASSERT(condition)
|
||||
|
||||
#define TEST_ASSERT_FALSE(condition) \
|
||||
TEST_ASSERT(!(condition))
|
||||
|
||||
#define TEST_ASSERT_NULL(pointer) \
|
||||
TEST_ASSERT((pointer) == nullptr)
|
||||
|
||||
#define TEST_ASSERT_NOT_NULL(pointer) \
|
||||
TEST_ASSERT((pointer) != nullptr)
|
||||
|
||||
#define TEST_ASSERT_LESS_OR_EQUAL(expected, actual) \
|
||||
TEST_ASSERT((actual) <= (expected))
|
||||
|
||||
// Unity test runner macros
|
||||
#define UNITY_BEGIN() Unity::unity_begin(__FILE__)
|
||||
#define UNITY_END() Unity::unity_end()
|
||||
#define RUN_TEST(test_func) Unity::unity_run_test(test_func, #test_func)
|
||||
|
||||
// Simple mock Arduino interface for testing
|
||||
class MockArduinoInterface : public ArduinoInterface
|
||||
{
|
||||
|
||||
@@ -1,192 +0,0 @@
|
||||
# 🏷️ Semantic Versioning Guide
|
||||
|
||||
This document explains how to use the semantic versioning system for Luke's Rocket Launcher project.
|
||||
|
||||
## 📋 **Overview**
|
||||
|
||||
The project now uses **semantic versioning** to automatically manage releases, create GitHub releases, and package firmware files. This ensures consistent versioning and makes it easy for users to get the latest firmware.
|
||||
|
||||
## 🔢 **Version Format**
|
||||
|
||||
**Format**: `MAJOR.MINOR.PATCH` (e.g., `1.0.0`, `1.2.3`)
|
||||
|
||||
- **MAJOR** (1.0.0 → 2.0.0): Breaking changes, incompatible API changes
|
||||
- **MINOR** (1.0.0 → 1.1.0): New features, backward compatible
|
||||
- **PATCH** (1.0.0 → 1.0.1): Bug fixes, improvements, backward compatible
|
||||
|
||||
## 🚀 **Creating Releases**
|
||||
|
||||
### **Option 1: Using the Release Script (Recommended)**
|
||||
|
||||
```bash
|
||||
# From project root directory
|
||||
./scripts/release.sh --type minor
|
||||
|
||||
# Or with custom version
|
||||
./scripts/release.sh --version 1.0.0
|
||||
|
||||
# Dry run to see what would happen
|
||||
./scripts/release.sh --type patch --dry-run
|
||||
```
|
||||
|
||||
**Script Options:**
|
||||
- `--type`: `patch`, `minor`, or `major`
|
||||
- `--version`: Specific version number
|
||||
- `--message`: Custom release message
|
||||
- `--dry-run`: Preview without making changes
|
||||
|
||||
### **Option 2: Using Make**
|
||||
|
||||
```bash
|
||||
# From code/RocketLauncher directory
|
||||
make release
|
||||
```
|
||||
|
||||
### **Option 3: Manual Git Tags**
|
||||
|
||||
```bash
|
||||
git tag -a v1.0.0 -m "Release v1.0.0"
|
||||
git push origin v1.0.0
|
||||
```
|
||||
|
||||
### **Option 4: GitHub Actions Manual Trigger**
|
||||
|
||||
1. Go to [Actions](https://github.com/KofTwentyTwo/Lukes-Rocket-Launcher/actions)
|
||||
2. Click "Semantic Release"
|
||||
3. Click "Run workflow"
|
||||
4. Enter version and release type
|
||||
5. Click "Run workflow"
|
||||
|
||||
## 📝 **Commit Message Convention**
|
||||
|
||||
Use conventional commit messages to automatically determine version increments:
|
||||
|
||||
```bash
|
||||
# Patch releases (bug fixes, improvements)
|
||||
fix(arduino): resolve startup transition issue
|
||||
fix(testing): fix mock interface behavior
|
||||
docs: update installation instructions
|
||||
|
||||
# Minor releases (new features)
|
||||
feat(arduino): add new safety feature
|
||||
feat(testing): add comprehensive test suite
|
||||
feat(build): add automated release workflow
|
||||
|
||||
# Major releases (breaking changes)
|
||||
feat!: completely redesign state machine
|
||||
BREAKING CHANGE: change pin assignments
|
||||
```
|
||||
|
||||
## 🔄 **Release Workflow**
|
||||
|
||||
When you create a release:
|
||||
|
||||
1. **Version Determination**: Script calculates next version
|
||||
2. **Git Tag**: Creates and pushes version tag
|
||||
3. **GitHub Actions**: Automatically triggers build workflow
|
||||
4. **Build & Test**: Runs tests and builds firmware
|
||||
5. **Package Creation**: Creates downloadable firmware files
|
||||
6. **GitHub Release**: Creates release with assets and notes
|
||||
|
||||
## 📦 **Release Assets**
|
||||
|
||||
Each release automatically includes:
|
||||
|
||||
- **Simulation Firmware**: `.hex` file for SimulIDE
|
||||
- **Hardware Firmware**: `.hex` file for Arduino
|
||||
- **Release Notes**: Auto-generated from commits
|
||||
- **Build Information**: Version, date, commit hash
|
||||
|
||||
## 🎯 **Best Practices**
|
||||
|
||||
### **When to Release**
|
||||
|
||||
- **Patch**: Bug fixes, documentation updates, minor improvements
|
||||
- **Minor**: New features, enhancements, backward compatible changes
|
||||
- **Major**: Breaking changes, major redesigns, incompatible updates
|
||||
|
||||
### **Release Frequency**
|
||||
|
||||
- **Patch**: Weekly or as needed
|
||||
- **Minor**: Monthly or when features are complete
|
||||
- **Major**: Quarterly or for significant changes
|
||||
|
||||
### **Before Releasing**
|
||||
|
||||
1. **Test Everything**: Ensure all tests pass
|
||||
2. **Update Documentation**: Keep README and docs current
|
||||
3. **Check Dependencies**: Verify library versions are stable
|
||||
4. **Clean Working Directory**: Commit or stash all changes
|
||||
|
||||
## 🛠️ **Troubleshooting**
|
||||
|
||||
### **Common Issues**
|
||||
|
||||
**Tag Already Exists:**
|
||||
```bash
|
||||
# Check existing tags
|
||||
git tag -l
|
||||
|
||||
# Delete local tag if needed
|
||||
git tag -d v1.0.0
|
||||
|
||||
# Delete remote tag if needed
|
||||
git push origin --delete v1.0.0
|
||||
```
|
||||
|
||||
**Workflow Fails:**
|
||||
1. Check [Actions](https://github.com/KofTwentyTwo/Lukes-Rocket-Launcher/actions) for errors
|
||||
2. Ensure tests pass locally: `make test`
|
||||
3. Verify build works: `make build`
|
||||
|
||||
**Version Calculation Issues:**
|
||||
```bash
|
||||
# Check current version
|
||||
git describe --tags --abbrev=0
|
||||
|
||||
# See commit history
|
||||
git log --oneline --decorate
|
||||
```
|
||||
|
||||
## 📚 **Examples**
|
||||
|
||||
### **Example 1: Bug Fix Release**
|
||||
|
||||
```bash
|
||||
# Fix a bug
|
||||
git commit -m "fix(arduino): resolve button debouncing issue"
|
||||
|
||||
# Create patch release
|
||||
./scripts/release.sh --type patch --message "Bug fix release"
|
||||
```
|
||||
|
||||
### **Example 2: Feature Release**
|
||||
|
||||
```bash
|
||||
# Add new feature
|
||||
git commit -m "feat(arduino): add current sensing circuit"
|
||||
|
||||
# Create minor release
|
||||
./scripts/release.sh --type minor --message "Add current sensing feature"
|
||||
```
|
||||
|
||||
### **Example 3: Major Update**
|
||||
|
||||
```bash
|
||||
# Breaking change
|
||||
git commit -m "feat!: redesign state machine architecture"
|
||||
|
||||
# Create major release
|
||||
./scripts/release.sh --type major --message "Complete state machine redesign"
|
||||
```
|
||||
|
||||
## 🔗 **Related Links**
|
||||
|
||||
- [GitHub Actions](https://github.com/KofTwentyTwo/Lukes-Rocket-Launcher/actions)
|
||||
- [Releases](https://github.com/KofTwentyTwo/Lukes-Rocket-Launcher/releases)
|
||||
- [Conventional Commits](https://www.conventionalcommits.org/)
|
||||
- [Semantic Versioning](https://semver.org/)
|
||||
|
||||
---
|
||||
|
||||
**🚀 Ready to release? Use `./scripts/release.sh --help` for more options!**
|
||||
Reference in new issue
Block a user