diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d01e33c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,143 @@ +cmake_minimum_required(VERSION 3.16) + +project(qtrocket VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools PrintSupport) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools PrintSupport) +find_package(CURL) +find_package(fmt) + +set(TS_FILES qtrocket_en_US.ts) + +include_directories(${PROJECT_SOURCE_DIR}) + +set(PROJECT_SOURCES + main.cpp + QtRocket.cpp + QtRocket.h + gui/AboutWindow.cpp + gui/AboutWindow.h + gui/AboutWindow.ui + gui/AnalysisWindow.cpp + gui/AnalysisWindow.h + gui/AnalysisWindow.ui + gui/MainWindow.cpp + gui/MainWindow.h + gui/MainWindow.ui + gui/RocketTreeView.cpp + gui/RocketTreeView.h + gui/SimOptionsWindow.cpp + gui/SimOptionsWindow.h + gui/SimOptionsWindow.ui + gui/ThrustCurveMotorSelector.cpp + gui/ThrustCurveMotorSelector.h + gui/ThrustCurveMotorSelector.ui + gui/qcustomplot.cpp + gui/qcustomplot.h + model/MotorCase.cpp + model/MotorCase.h + model/MotorModel.cpp + model/MotorModel.h + model/MotorModelDatabase.cpp + model/MotorModelDatabase.h + model/Rocket.cpp + model/Rocket.h + model/ThrustCurve.cpp + model/ThrustCurve.h + sim/AtmosphericModel.h + sim/ConstantAtmosphere.h + sim/ConstantGravityModel.cpp + sim/ConstantGravityModel.h + sim/DESolver.h + sim/GeoidModel.h + sim/GravityModel.cpp + sim/GravityModel.h + sim/Propagator.cpp + sim/Propagator.h + sim/RK4Solver.h + sim/SimulationOptions.h + sim/SphericalGeoidModel.cpp + sim/SphericalGeoidModel.h + sim/SphericalGravityModel.cpp + sim/SphericalGravityModel.h + sim/StateData.cpp + sim/StateData.h + sim/USStandardAtmosphere.cpp + sim/USStandardAtmosphere.h + sim/WindModel.cpp + sim/WindModel.h + utils/BinMap.cpp + utils/BinMap.h + utils/CurlConnection.cpp + utils/CurlConnection.h + utils/Logger.cpp + utils/Logger.h + utils/RSEDatabaseLoader.cpp + utils/RSEDatabaseLoader.h + utils/ThreadPool.cpp + utils/ThreadPool.h + utils/ThrustCurveAPI.cpp + utils/ThrustCurveAPI.h + utils/Triplet.h + utils/TSQueue.h + utils/math/Constants.h + utils/math/Quaternion.cpp + utils/math/Quaternion.h + utils/math/UtilityMathFunctions.cpp + utils/math/UtilityMathFunctions.h + utils/math/Vector3.cpp + utils/math/Vector3.h + ${TS_FILES} +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(qtrocket + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET qtrocket APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation + + qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) +else() + if(ANDROID) + add_library(qtrocket SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(qtrocket + ${PROJECT_SOURCES} + ) + endif() + + qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) +endif() + +target_link_libraries(qtrocket PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${Qt_VERSION_MAJOR}::PrintSupport curl jsoncpp fmt::fmt-header-only) + +set_target_properties(qtrocket PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +install(TARGETS qtrocket + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(qtrocket) +endif() diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user new file mode 100644 index 0000000..81f852a --- /dev/null +++ b/CMakeLists.txt.user @@ -0,0 +1,416 @@ + + + + + + EnvironmentId + {126c64d7-12e8-468a-ad3f-06f0fbdaeca1} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + false + true + false + 1 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + + 0 + true + + true + true + Builtin.DefaultTidyAndClazy + 6 + + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt6 + Desktop Qt6 + {834bc66d-170a-454c-a2b0-c17798dc7b12} + 0 + 0 + 0 + + Debug + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + 0 + /home/travis/build-qtrocket-Desktop_Qt6-Debug + + + + + all + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + CMakeProjectManager.CMakeBuildConfiguration + + + Release + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/travis/build-qtrocket-Desktop_Qt6-Release + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/travis/build-qtrocket-Desktop_Qt6-RelWithDebInfo + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + 0 + /home/travis/build-qtrocket-Desktop_Qt6-Profile + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/travis/build-qtrocket-Desktop_Qt6-MinSizeRel + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Minimum Size Release + CMakeProjectManager.CMakeBuildConfiguration + + 5 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + 2 + + qtrocket + CMakeProjectManager.CMakeRunConfiguration.qtrocket + qtrocket + false + true + true + false + true + /home/travis/build-qtrocket-Desktop_Qt6-Debug + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + + diff --git a/qtrocket.pro b/qtrocket.pro deleted file mode 100644 index 6e5090f..0000000 --- a/qtrocket.pro +++ /dev/null @@ -1,108 +0,0 @@ -QT += core gui - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport - -CONFIG += c++17 - -# You can make your code fail to compile if it uses deprecated APIs. -# In order to do so, uncomment the following line. -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - -SOURCES += \ - QtRocket.cpp \ - gui/AboutWindow.cpp \ - gui/AnalysisWindow.cpp \ - gui/SimOptionsWindow.cpp \ - gui/ThrustCurveMotorSelector.cpp \ - gui/qcustomplot.cpp \ - main.cpp \ - gui/RocketTreeView.cpp \ - gui/MainWindow.cpp \ - model/MotorCase.cpp \ - model/MotorModel.cpp \ - model/MotorModelDatabase.cpp \ - model/Rocket.cpp \ - model/ThrustCurve.cpp \ - sim/ConstantGravityModel.cpp \ - sim/GravityModel.cpp \ - sim/Propagator.cpp \ - sim/SphericalGeoidModel.cpp \ - sim/SphericalGravityModel.cpp \ - sim/StateData.cpp \ - sim/USStandardAtmosphere.cpp \ - sim/WindModel.cpp \ - utils/BinMap.cpp \ - utils/CurlConnection.cpp \ - utils/Logger.cpp \ - utils/RSEDatabaseLoader.cpp \ - utils/ThreadPool.cpp \ - utils/ThrustCurveAPI.cpp \ - utils/math/Quaternion.cpp \ - utils/math/UtilityMathFunctions.cpp \ - utils/math/Vector3.cpp - -HEADERS += \ - QtRocket.h \ - gui/AboutWindow.h \ - gui/AnalysisWindow.h \ - gui/RocketTreeView.h \ - gui/MainWindow.h \ - gui/SimOptionsWindow.h \ - gui/ThrustCurveMotorSelector.h \ - gui/qcustomplot.h \ - model/MotorCase.h \ - model/MotorModel.h \ - model/MotorModelDatabase.h \ - model/Rocket.h \ - model/ThrustCurve.h \ - sim/AtmosphericModel.h \ - sim/ConstantAtmosphere.h \ - sim/ConstantGravityModel.h \ - sim/DESolver.h \ - sim/GeoidModel.h \ - sim/GravityModel.h \ - sim/Propagator.h \ - sim/RK4Solver.h \ - sim/SimulationOptions.h \ - sim/SphericalGeoidModel.h \ - sim/SphericalGravityModel.h \ - sim/StateData.h \ - sim/USStandardAtmosphere.h \ - sim/WindModel.h \ - utils/BinMap.h \ - utils/CurlConnection.h \ - utils/Logger.h \ - utils/RSEDatabaseLoader.h \ - utils/TSQueue.h \ - utils/ThreadPool.h \ - utils/ThrustCurveAPI.h \ - utils/Triplet.h \ - utils/math/Constants.h \ - utils/math/Quaternion.h \ - utils/math/UtilityMathFunctions.h \ - utils/math/Vector3.h - -FORMS += \ - gui/AboutWindow.ui \ - gui/AnalysisWindow.ui \ - gui/MainWindow.ui \ - gui/SimOptionsWindow.ui \ - gui/ThrustCurveMotorSelector.ui - -TRANSLATIONS += \ - qtrocket_en_US.ts -CONFIG += lrelease -CONFIG += embed_translations - -# Default rules for deployment. -qnx: target.path = /tmp/$${TARGET}/bin -else: unix:!android: target.path = /opt/$${TARGET}/bin -!isEmpty(target.path): INSTALLS += target - -unix: CONFIG += link_pkgconfig -unix: PKGCONFIG += libcurl -unix: PKGCONFIG += fmt -unix: PKGCONFIG += jsoncpp - -RESOURCES += \ - qtrocket.qrc