From 49bb62c55f3eaa0161b7bab30c9acf0ea395d974 Mon Sep 17 00:00:00 2001 From: Thomas Pietrzak Date: Mon, 25 Apr 2022 21:39:09 +0200 Subject: [PATCH] cmake, vscode, Qt6 --- .gitignore | 20 ++++++++++ .gitmodules | 3 ++ .vscode/launch.json | 52 +++++++++++++++++++++++++ .vscode/tasks.json | 4 ++ CMakeLists.txt | 7 ++++ TactonDebug/AngleTester/CMakeLists.txt | 13 +++++++ TactonDebug/AngleTester/angletester.cpp | 2 +- TactonDebug/AngleTester/angletester.h | 6 +-- TactonDebug/AngleTester/main.cpp | 2 +- TactonDebug/MagicCircle/CMakeLists.txt | 13 +++++++ TactonDebug/MagicCircle/magiccircle.cpp | 2 +- TactonDebug/MagicCircle/magiccircle.h | 6 +-- TactonDebug/MagicCircle/main.cpp | 2 +- TactonDebug/TactonDebug/CMakeLists.txt | 13 +++++++ TactonDebug/TactonDebug/main.cpp | 2 +- TactonDebug/TactonDebug/tactondebug.cpp | 2 +- TactonDebug/TactonDebug/tactondebug.h | 6 +-- TactonPlayer/ArduinoSerial | 1 + TactonPlayer/CMakeLists.txt | 12 ++++++ TactonPlayer/Tacton.cpp | 24 ++++++------ TactonPlayer/Tacton.hpp | 10 ++--- TactonPlayer/TactonPlayer.cpp | 21 ++++++++-- TactonPlayer/TactonPlayer.hpp | 14 +++---- 23 files changed, 194 insertions(+), 43 deletions(-) create mode 100644 .gitmodules create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 CMakeLists.txt create mode 100644 TactonDebug/AngleTester/CMakeLists.txt create mode 100644 TactonDebug/MagicCircle/CMakeLists.txt create mode 100644 TactonDebug/TactonDebug/CMakeLists.txt create mode 160000 TactonPlayer/ArduinoSerial create mode 100644 TactonPlayer/CMakeLists.txt diff --git a/.gitignore b/.gitignore index 4db2c13..a3a2623 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,28 @@ *.zip +build # Created by https://www.toptal.com/developers/gitignore/api/c++,visualstudio,visualstudiocode,xcode,sublimetext,qt,qtcreator,macos,windows,linux # Edit at https://www.toptal.com/developers/gitignore?templates=c++,visualstudio,visualstudiocode,xcode,sublimetext,qt,qtcreator,macos,windows,linux +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +CPack*.cmake +_deps +DartConfiguration.tcl + +### CMake Patch ### +# External projects +*-prefix/ + ### C++ ### # Prerequisites *.d diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b890c45 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "TactonPlayer/ArduinoSerial"] + path = TactonPlayer/ArduinoSerial + url = https://github.com/RackhamLeNoir/arduinoserial diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..e0ff6cd --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,52 @@ +{ + // Utilisez IntelliSense pour en savoir plus sur les attributs possibles. + // Pointez pour afficher la description des attributs existants. + // Pour plus d'informations, visitez : https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Angle tester", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/build/TactonDebug/AngleTester/AngleTester", + "args": [], + "environment": [], + "cwd": "${workspaceFolder}/TactonDebug/AngleTester/", + "externalConsole": false, + "logging": { + "moduleLoad": false, + "trace": true + }, + "MIMode": "lldb", + "showDisplayString": true + }, + { + "name": "Tacton Debug", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/build/TactonDebug/TactonDebug/TactonDebug", + "args": [], "cwd": "${workspaceFolder}/TactonDebug/TactonDebug/", + "externalConsole": false, + "logging": { + "moduleLoad": false, + "trace": true + }, + "MIMode": "lldb", + "showDisplayString": true + }, + { + "name": "Magic circle", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/build/TactonDebug/MagicCircle/MagicCircle", + "environment": [], "cwd": "${workspaceFolder}/TactonDebug/MagicCircle/", + "externalConsole": false, + "logging": { + "moduleLoad": false, + "trace": true + }, + "MIMode": "lldb", + "showDisplayString": true + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..eb7fd53 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,4 @@ +{ + "version": "2.0.0", + "tasks": [] +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0d6e21c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.0.0) +project(TactonTools VERSION 0.1.0) + +add_subdirectory(TactonPlayer) +add_subdirectory(TactonDebug/AngleTester) +add_subdirectory(TactonDebug/MagicCircle) +add_subdirectory(TactonDebug/TactonDebug) diff --git a/TactonDebug/AngleTester/CMakeLists.txt b/TactonDebug/AngleTester/CMakeLists.txt new file mode 100644 index 0000000..81a8fbd --- /dev/null +++ b/TactonDebug/AngleTester/CMakeLists.txt @@ -0,0 +1,13 @@ +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +if(APPLE AND EXISTS /usr/local/opt/qt6) + list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt6") +endif() + +find_package(Qt6 REQUIRED COMPONENTS Widgets) + +add_executable(AngleTester main.cpp angletester.cpp) + +target_link_libraries(AngleTester PRIVATE TactonPlayer Qt6::Core Qt6::Gui Qt6::Widgets) diff --git a/TactonDebug/AngleTester/angletester.cpp b/TactonDebug/AngleTester/angletester.cpp index e3656be..1d75ba7 100644 --- a/TactonDebug/AngleTester/angletester.cpp +++ b/TactonDebug/AngleTester/angletester.cpp @@ -2,7 +2,7 @@ #include -AngleTester::AngleTester(QWidget *parent, Qt::WFlags flags) +AngleTester::AngleTester(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) { try diff --git a/TactonDebug/AngleTester/angletester.h b/TactonDebug/AngleTester/angletester.h index 9fecca0..99f6e44 100644 --- a/TactonDebug/AngleTester/angletester.h +++ b/TactonDebug/AngleTester/angletester.h @@ -1,17 +1,17 @@ #ifndef ANGLETESTER_H #define ANGLETESTER_H -#include +#include #include "ui_angletester.h" -#include +#include class AngleTester : public QMainWindow, Ui::AngleTesterClass { Q_OBJECT public: - AngleTester(QWidget *parent = 0, Qt::WFlags flags = 0); + AngleTester(QWidget *parent = 0, Qt::WindowFlags flags = Qt::Widget); ~AngleTester(); public slots: diff --git a/TactonDebug/AngleTester/main.cpp b/TactonDebug/AngleTester/main.cpp index d8f4cea..8c1597f 100644 --- a/TactonDebug/AngleTester/main.cpp +++ b/TactonDebug/AngleTester/main.cpp @@ -1,5 +1,5 @@ #include "angletester.h" -#include +#include int main(int argc, char *argv[]) { diff --git a/TactonDebug/MagicCircle/CMakeLists.txt b/TactonDebug/MagicCircle/CMakeLists.txt new file mode 100644 index 0000000..9b2a53d --- /dev/null +++ b/TactonDebug/MagicCircle/CMakeLists.txt @@ -0,0 +1,13 @@ +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +if(APPLE AND EXISTS /usr/local/opt/qt6) + list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt6") +endif() + +find_package(Qt6 REQUIRED COMPONENTS Widgets) + +add_executable(MagicCircle main.cpp magiccircle.cpp) + +target_link_libraries(MagicCircle PUBLIC TactonPlayer Qt6::Core Qt6::Gui Qt6::Widgets) diff --git a/TactonDebug/MagicCircle/magiccircle.cpp b/TactonDebug/MagicCircle/magiccircle.cpp index 6ea4475..8887246 100644 --- a/TactonDebug/MagicCircle/magiccircle.cpp +++ b/TactonDebug/MagicCircle/magiccircle.cpp @@ -2,7 +2,7 @@ #include -MagicCircle::MagicCircle(QWidget *parent, Qt::WFlags flags) +MagicCircle::MagicCircle(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags), _timer(this), _angle(0), _clockwise(true) { try diff --git a/TactonDebug/MagicCircle/magiccircle.h b/TactonDebug/MagicCircle/magiccircle.h index 3002144..f23bb4f 100644 --- a/TactonDebug/MagicCircle/magiccircle.h +++ b/TactonDebug/MagicCircle/magiccircle.h @@ -1,19 +1,19 @@ #ifndef MAGICCIRCLE_H #define MAGICCIRCLE_H -#include +#include #include "ui_magiccircle.h" #include -#include +#include class MagicCircle : public QMainWindow, Ui::MagicCircleClass { Q_OBJECT public: - MagicCircle(QWidget *parent = 0, Qt::WFlags flags = 0); + MagicCircle(QWidget *parent = 0, Qt::WindowFlags flags = Qt::Widget); ~MagicCircle(); public slots: diff --git a/TactonDebug/MagicCircle/main.cpp b/TactonDebug/MagicCircle/main.cpp index 288aa7c..18df712 100644 --- a/TactonDebug/MagicCircle/main.cpp +++ b/TactonDebug/MagicCircle/main.cpp @@ -1,5 +1,5 @@ #include "magiccircle.h" -#include +#include int main(int argc, char *argv[]) { diff --git a/TactonDebug/TactonDebug/CMakeLists.txt b/TactonDebug/TactonDebug/CMakeLists.txt new file mode 100644 index 0000000..227bbbb --- /dev/null +++ b/TactonDebug/TactonDebug/CMakeLists.txt @@ -0,0 +1,13 @@ +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +if(APPLE AND EXISTS /usr/local/opt/qt6) + list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt6") +endif() + +find_package(Qt6 REQUIRED COMPONENTS Widgets) + +add_executable(TactonDebug main.cpp tactondebug.cpp) + +target_link_libraries(TactonDebug PUBLIC TactonPlayer Qt6::Core Qt6::Gui Qt6::Widgets) diff --git a/TactonDebug/TactonDebug/main.cpp b/TactonDebug/TactonDebug/main.cpp index 7cb5b80..8a2e3dd 100644 --- a/TactonDebug/TactonDebug/main.cpp +++ b/TactonDebug/TactonDebug/main.cpp @@ -1,5 +1,5 @@ #include "tactondebug.h" -#include +#include int main(int argc, char *argv[]) { diff --git a/TactonDebug/TactonDebug/tactondebug.cpp b/TactonDebug/TactonDebug/tactondebug.cpp index e370ca7..4ebdec3 100644 --- a/TactonDebug/TactonDebug/tactondebug.cpp +++ b/TactonDebug/TactonDebug/tactondebug.cpp @@ -5,7 +5,7 @@ int TactonDebug::MaxFrequency = 400; int TactonDebug::MaxAmplitude = 255; int TactonDebug::MaxDuration = 2000; -TactonDebug::TactonDebug(QWidget *parent, Qt::WFlags flags) +TactonDebug::TactonDebug(QWidget *parent, Qt::WindowFlags flags) :QMainWindow(parent, flags) { try diff --git a/TactonDebug/TactonDebug/tactondebug.h b/TactonDebug/TactonDebug/tactondebug.h index ca468af..c385d47 100644 --- a/TactonDebug/TactonDebug/tactondebug.h +++ b/TactonDebug/TactonDebug/tactondebug.h @@ -1,17 +1,17 @@ #ifndef TACTONDEBUG_H #define TACTONDEBUG_H -#include +#include #include "ui_tactondebug.h" -#include +#include class TactonDebug : public QMainWindow, Ui::TactonDebugClass { Q_OBJECT public: - TactonDebug(QWidget *parent = 0, Qt::WFlags flags = 0); + TactonDebug(QWidget *parent = 0, Qt::WindowFlags flags = Qt::Widget); ~TactonDebug(); public slots: diff --git a/TactonPlayer/ArduinoSerial b/TactonPlayer/ArduinoSerial new file mode 160000 index 0000000..975c6c1 --- /dev/null +++ b/TactonPlayer/ArduinoSerial @@ -0,0 +1 @@ +Subproject commit 975c6c196580d3c928e76cb1514912bd42d16315 diff --git a/TactonPlayer/CMakeLists.txt b/TactonPlayer/CMakeLists.txt new file mode 100644 index 0000000..014e598 --- /dev/null +++ b/TactonPlayer/CMakeLists.txt @@ -0,0 +1,12 @@ +add_subdirectory(ArduinoSerial) + +set(source_files + Tacton.cpp + TactonPlayer.cpp +) +add_library(TactonPlayer ${source_files}) + +target_link_libraries(TactonPlayer PUBLIC ArduinoSerial) + +target_include_directories(TactonPlayer INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) + diff --git a/TactonPlayer/Tacton.cpp b/TactonPlayer/Tacton.cpp index 60c47af..ca513a5 100644 --- a/TactonPlayer/Tacton.cpp +++ b/TactonPlayer/Tacton.cpp @@ -181,28 +181,28 @@ const unsigned int Tacton::getNbFrames() const return _nbframes; } -__declspec(dllexport) void Tacton::setPattern(char pattern) +void Tacton::setPattern(char pattern) { setPattern(0, pattern); } -__declspec(dllexport) void Tacton::setPattern(unsigned int frame, char pattern) +void Tacton::setPattern(unsigned int frame, char pattern) { if (frame < _nbframes) _patterns[frame] = pattern; } -__declspec(dllexport) void Tacton::setPattern(char *pattern) +void Tacton::setPattern(char *pattern) { setPattern(0, pattern); } -__declspec(dllexport) void Tacton::setPattern(const char *pattern) +void Tacton::setPattern(const char *pattern) { setPattern(0, pattern); } -__declspec(dllexport) void Tacton::setPattern(unsigned int frame, char *pattern) +void Tacton::setPattern(unsigned int frame, char *pattern) { if (frame < _nbframes) { @@ -214,7 +214,7 @@ __declspec(dllexport) void Tacton::setPattern(unsigned int frame, char *pattern) } } -__declspec(dllexport) void Tacton::setPattern(unsigned int frame, const char *pattern) +void Tacton::setPattern(unsigned int frame, const char *pattern) { if (frame < _nbframes) { @@ -226,34 +226,34 @@ __declspec(dllexport) void Tacton::setPattern(unsigned int frame, const char *pa } } -__declspec(dllexport) void Tacton::setDuration(unsigned int duration) +void Tacton::setDuration(unsigned int duration) { setDuration(0, duration); } -__declspec(dllexport) void Tacton::setDuration(unsigned int frame, unsigned int duration) +void Tacton::setDuration(unsigned int frame, unsigned int duration) { if (frame < _nbframes) _durations[frame] = duration; } -__declspec(dllexport) void Tacton::setFrequency(unsigned int frequency) +void Tacton::setFrequency(unsigned int frequency) { setFrequency(0, frequency); } -__declspec(dllexport) void Tacton::setFrequency(unsigned int frame, unsigned int frequency) +void Tacton::setFrequency(unsigned int frame, unsigned int frequency) { if (frame < _nbframes) _frequencies[frame] = frequency; } -__declspec(dllexport) void Tacton::setAmplitude(unsigned int amplitude) +void Tacton::setAmplitude(unsigned int amplitude) { setAmplitude(0, amplitude); } -__declspec(dllexport) void Tacton::setAmplitude(unsigned int frame, unsigned int amplitude) +void Tacton::setAmplitude(unsigned int frame, unsigned int amplitude) { if (frame < _nbframes) _amplitudes[frame] = amplitude; diff --git a/TactonPlayer/Tacton.hpp b/TactonPlayer/Tacton.hpp index a076135..3f7dbc1 100644 --- a/TactonPlayer/Tacton.hpp +++ b/TactonPlayer/Tacton.hpp @@ -11,14 +11,14 @@ #define POS2_LEFT 0x04 #define POS2_DOWN 0x08 -#ifdef __MACOSX__ -#define EXPORTED -#else +#ifdef _WIN32 #ifdef _WINDLL - #define EXPORTED __declspec(dllexport) + #define EXPORTED __declspec(dllexport) #else - #define EXPORTED __declspec(dllimport) + #define EXPORTED __declspec(dllimport) #endif +#else + #define EXPORTED #endif class EXPORTED Tacton diff --git a/TactonPlayer/TactonPlayer.cpp b/TactonPlayer/TactonPlayer.cpp index 0b46a7c..02a3d9f 100644 --- a/TactonPlayer/TactonPlayer.cpp +++ b/TactonPlayer/TactonPlayer.cpp @@ -1,14 +1,27 @@ #include "TactonPlayer.hpp" -#include +#ifdef _WIN32 + #include +#elif defined(LINUX) + #include +#else + #include +#endif #include +#include TactonPlayer::TactonPlayer(const char *port) { try { +#ifdef _WIN32 _comport = new SerialWindows(port); +#elif defined(LINUX) + _comport = new SerialLinux(port); +#else + _comport = new SerialMac(port); +#endif } catch(...) { @@ -24,13 +37,13 @@ TactonPlayer::~TactonPlayer() void TactonPlayer::start() { if (_comport) - _comport->WriteData("S", 1); + _comport->WriteData((void *)("S"), 1); } void TactonPlayer::stop() { if (_comport) - _comport->WriteData("Q", 1); + _comport->WriteData((void *)("Q"), 1); } void TactonPlayer::regist(const Tacton &t) @@ -185,7 +198,7 @@ void TactonPlayer::stopBuzz() if (!_comport) return; - _comport->WriteData("B", 1); + _comport->WriteData((void *)("B"), 1); } void TactonPlayer::debugRead(char *res, int nb) const diff --git a/TactonPlayer/TactonPlayer.hpp b/TactonPlayer/TactonPlayer.hpp index 2873168..cd326a5 100644 --- a/TactonPlayer/TactonPlayer.hpp +++ b/TactonPlayer/TactonPlayer.hpp @@ -3,16 +3,16 @@ #include "Tacton.hpp" -#ifdef __MACOSX__ #include -#define EXPORTED -#else -#include + +#ifdef _WIN32 #ifdef _WINDLL - #define EXPORTED __declspec(dllexport) - #else - #define EXPORTED __declspec(dllimport) + #define EXPORTED __declspec(dllexport) + #else + #define EXPORTED __declspec(dllimport) #endif +#else + #define EXPORTED #endif class EXPORTED TactonPlayer -- 2.30.2