diff --git a/CMakeLists.txt b/CMakeLists.txt index fc766bb..16e8a92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 3.0) -add_subdirectory(src) +add_subdirectory(lib) add_subdirectory(test) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..cc4a1a7 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,59 @@ +project(DOtherSide) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) + +if (WIN32) + add_definitions(-DWIN32) +endif() + +find_package(Qt5Core) +find_package(Qt5Qml) +find_package(Qt5Gui) +find_package(Qt5Quick) +find_package(Qt5Widgets) + +set(HEADERS_LIST + include/DOtherSide/BaseQAbstractListModel.h + include/DOtherSide/DOtherSideTypes.h + include/DOtherSide/DynamicSignal.h + include/DOtherSide/BaseQObject.h + include/DOtherSide/DynamicProperty.h + include/DOtherSide/DynamicSlot.h + include/DOtherSide/DOtherSide.h + include/DOtherSide/DynamicQObject.h + include/DOtherSide/IDynamicQObject.h + include/DOtherSide/OnSlotExecutedHandler.h + ) + +set(SRC_LIST + src/DOtherSide.cpp + src/OnSlotExecutedHandler.cpp + src/DynamicSlot.cpp + src/DynamicSignal.cpp + src/DynamicProperty.cpp + ) + +include_directories(include include/Qt) + +# Shared version for distributing +add_library(${PROJECT_NAME} SHARED ${SRC_LIST} ${HEADERS_LIST}) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Qml Qt5::Quick) + +# Static version for testing +add_library("${PROJECT_NAME}Static" STATIC ${SRC_LIST} ${HEADERS_LIST}) +set_property(TARGET "${PROJECT_NAME}Static" PROPERTY CXX_STANDARD 11) +target_link_libraries("${PROJECT_NAME}Static" PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Qml Qt5::Quick) + +# Install directive for header files +install(FILES + include/DOtherSide/DOtherSide.h + include/DOtherSide/DOtherSideTypes.h + DESTINATION include/DOtherSide) + +# Install directive for binaries +install(TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ) diff --git a/src/BaseQAbstractListModel.h b/lib/include/DOtherSide/BaseQAbstractListModel.h similarity index 98% rename from src/BaseQAbstractListModel.h rename to lib/include/DOtherSide/BaseQAbstractListModel.h index b9b238d..219a6f8 100644 --- a/src/BaseQAbstractListModel.h +++ b/lib/include/DOtherSide/BaseQAbstractListModel.h @@ -1,8 +1,11 @@ #pragma once -#include "DOtherSideTypes.h" -#include "DynamicQObject.h" +// Qt #include +// DOtherSide +#include "DOtherSide/DOtherSideTypes.h" +#include "DOtherSide/DynamicQObject.h" + /// This class act as a base class for D and Nim QAbstractListModel class BaseQAbstractListModel final : public DynamicQObject diff --git a/src/BaseQObject.h b/lib/include/DOtherSide/BaseQObject.h similarity index 60% rename from src/BaseQObject.h rename to lib/include/DOtherSide/BaseQObject.h index eb1b49f..07be198 100644 --- a/src/BaseQObject.h +++ b/lib/include/DOtherSide/BaseQObject.h @@ -1,5 +1,5 @@ #pragma once -#include "DynamicQObject.h" +#include "DOtherSide/DynamicQObject.h" using BaseQObject = DynamicQObject; diff --git a/src/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h similarity index 99% rename from src/DOtherSide.h rename to lib/include/DOtherSide/DOtherSide.h index 9bf9e05..773e297 100644 --- a/src/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -7,7 +7,7 @@ #define DOS_API #endif -#include "DOtherSideTypes.h" +#include #ifdef __cplusplus extern "C" diff --git a/src/DOtherSideTypes.h b/lib/include/DOtherSide/DOtherSideTypes.h similarity index 100% rename from src/DOtherSideTypes.h rename to lib/include/DOtherSide/DOtherSideTypes.h diff --git a/src/DynamicProperty.h b/lib/include/DOtherSide/DynamicProperty.h similarity index 98% rename from src/DynamicProperty.h rename to lib/include/DOtherSide/DynamicProperty.h index c580c14..12705b9 100644 --- a/src/DynamicProperty.h +++ b/lib/include/DOtherSide/DynamicProperty.h @@ -1,6 +1,8 @@ #pragma once +// std #include +// Qt #include #include diff --git a/src/DynamicQObject.h b/lib/include/DOtherSide/DynamicQObject.h similarity index 98% rename from src/DynamicQObject.h rename to lib/include/DOtherSide/DynamicQObject.h index d646c79..b4efc19 100644 --- a/src/DynamicQObject.h +++ b/lib/include/DOtherSide/DynamicQObject.h @@ -1,16 +1,18 @@ #pragma once +// std #include #include +// Qt #include #include #include - #include "private/qmetaobjectbuilder_p.h" -#include "DynamicSignal.h" -#include "DynamicSlot.h" -#include "DynamicProperty.h" -#include "IDynamicQObject.h" +// DOtherSide +#include "DOtherSide/DynamicSignal.h" +#include "DOtherSide/DynamicSlot.h" +#include "DOtherSide/DynamicProperty.h" +#include "DOtherSide/IDynamicQObject.h" /// This class implements a QObject to which signals, slots and properties can be added dynamically template diff --git a/src/DynamicSignal.h b/lib/include/DOtherSide/DynamicSignal.h similarity index 98% rename from src/DynamicSignal.h rename to lib/include/DOtherSide/DynamicSignal.h index d2c2dff..875ff37 100644 --- a/src/DynamicSignal.h +++ b/lib/include/DOtherSide/DynamicSignal.h @@ -1,7 +1,8 @@ #pragma once +// std #include - +// Qt #include #include #include diff --git a/src/DynamicSlot.h b/lib/include/DOtherSide/DynamicSlot.h similarity index 98% rename from src/DynamicSlot.h rename to lib/include/DOtherSide/DynamicSlot.h index b1b8ee6..1286a43 100644 --- a/src/DynamicSlot.h +++ b/lib/include/DOtherSide/DynamicSlot.h @@ -1,8 +1,9 @@ #pragma once +// std #include #include - +// Qt #include #include #include @@ -10,7 +11,6 @@ #include #include #include - #include "private/qmetaobjectbuilder_p.h" class QString; diff --git a/src/IDynamicQObject.h b/lib/include/DOtherSide/IDynamicQObject.h similarity index 100% rename from src/IDynamicQObject.h rename to lib/include/DOtherSide/IDynamicQObject.h diff --git a/src/OnSlotExecutedHandler.h b/lib/include/DOtherSide/OnSlotExecutedHandler.h similarity index 84% rename from src/OnSlotExecutedHandler.h rename to lib/include/DOtherSide/OnSlotExecutedHandler.h index 0aa0d56..9b4eb24 100644 --- a/src/OnSlotExecutedHandler.h +++ b/lib/include/DOtherSide/OnSlotExecutedHandler.h @@ -1,8 +1,11 @@ #pragma once -#include +// std #include -#include "IDynamicQObject.h" +// Qt +#include +// DOtherSide +#include "DOtherSide/IDynamicQObject.h" class DynamicSlot; diff --git a/src/private/qmetaobject_p.h b/lib/include/Qt/private/qmetaobject_p.h similarity index 100% rename from src/private/qmetaobject_p.h rename to lib/include/Qt/private/qmetaobject_p.h diff --git a/src/private/qmetaobjectbuilder_p.h b/lib/include/Qt/private/qmetaobjectbuilder_p.h similarity index 100% rename from src/private/qmetaobjectbuilder_p.h rename to lib/include/Qt/private/qmetaobjectbuilder_p.h diff --git a/src/private/qobject_p.h b/lib/include/Qt/private/qobject_p.h similarity index 100% rename from src/private/qobject_p.h rename to lib/include/Qt/private/qobject_p.h diff --git a/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp similarity index 98% rename from src/DOtherSide.cpp rename to lib/src/DOtherSide.cpp index 224cd30..ada0ac6 100644 --- a/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -1,4 +1,4 @@ -#include "DOtherSide.h" +#include "DOtherSide/DOtherSide.h" #include @@ -12,10 +12,10 @@ #include #include -#include "DynamicQObject.h" -#include "BaseQAbstractListModel.h" -#include "BaseQObject.h" -#include "OnSlotExecutedHandler.h" +#include "DOtherSide/DynamicQObject.h" +#include "DOtherSide/BaseQAbstractListModel.h" +#include "DOtherSide/BaseQObject.h" +#include "DOtherSide/OnSlotExecutedHandler.h" void convert_to_cstring(const QString& source, char** destination) { diff --git a/src/DynamicProperty.cpp b/lib/src/DynamicProperty.cpp similarity index 98% rename from src/DynamicProperty.cpp rename to lib/src/DynamicProperty.cpp index c6d80da..f343ba6 100644 --- a/src/DynamicProperty.cpp +++ b/lib/src/DynamicProperty.cpp @@ -1,4 +1,4 @@ -#include "DynamicProperty.h" +#include "DOtherSide/DynamicProperty.h" struct DynamicProperty::PropertyData final { diff --git a/src/DynamicSignal.cpp b/lib/src/DynamicSignal.cpp similarity index 95% rename from src/DynamicSignal.cpp rename to lib/src/DynamicSignal.cpp index 81b3e42..67bdcdf 100644 --- a/src/DynamicSignal.cpp +++ b/lib/src/DynamicSignal.cpp @@ -1,4 +1,4 @@ -#include "DynamicSignal.h" +#include "DOtherSide/DynamicSignal.h" struct DynamicSignal::SignalData { @@ -9,8 +9,7 @@ struct DynamicSignal::SignalData DynamicSignal::DynamicSignal() : d(nullptr) -{ -} +{} DynamicSignal::DynamicSignal(const QString& name, const QList& arguments) : d(new SignalData()) @@ -45,9 +44,7 @@ DynamicSignal& DynamicSignal::operator=(const DynamicSignal& signal) return *this; } -DynamicSignal::~DynamicSignal() -{ -} +DynamicSignal::~DynamicSignal() = default; bool DynamicSignal::isValid() const { diff --git a/src/DynamicSlot.cpp b/lib/src/DynamicSlot.cpp similarity index 98% rename from src/DynamicSlot.cpp rename to lib/src/DynamicSlot.cpp index 9b25818..cfb9dd3 100644 --- a/src/DynamicSlot.cpp +++ b/lib/src/DynamicSlot.cpp @@ -1,4 +1,4 @@ -#include "DynamicSlot.h" +#include "DOtherSide/DynamicSlot.h" struct DynamicSlot::SlotData { diff --git a/src/OnSlotExecutedHandler.cpp b/lib/src/OnSlotExecutedHandler.cpp similarity index 92% rename from src/OnSlotExecutedHandler.cpp rename to lib/src/OnSlotExecutedHandler.cpp index 738ad57..0213207 100644 --- a/src/OnSlotExecutedHandler.cpp +++ b/lib/src/OnSlotExecutedHandler.cpp @@ -1,5 +1,5 @@ -#include "OnSlotExecutedHandler.h" -#include "DynamicSlot.h" +#include "DOtherSide/OnSlotExecutedHandler.h" +#include "DOtherSide/DynamicSlot.h" OnSlotExecutedHandler::OnSlotExecutedHandler(void *dObjectPointer, IDynamicQObject::Callback dObjectCallback) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 817a88b..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -project(DOtherSide) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(CMAKE_AUTOMOC ON) - -if (WIN32) - add_definitions(-DWIN32) -endif() - -find_package(Qt5Core) -find_package(Qt5Qml) -find_package(Qt5Gui) -find_package(Qt5Quick) -find_package(Qt5Widgets) - -set(HEADERS_LIST - BaseQAbstractListModel.h - DOtherSideTypes.h - DynamicSignal.h - BaseQObject.h - DynamicProperty.h - DynamicSlot.h - DOtherSide.h - DynamicQObject.h - IDynamicQObject.h - OnSlotExecutedHandler.h -) - -set(SRC_LIST - DOtherSide.cpp - OnSlotExecutedHandler.cpp - DynamicSlot.cpp - DynamicSignal.cpp - DynamicProperty.cpp -) - -# Shared version for distributing -add_library(${PROJECT_NAME} SHARED ${SRC_LIST} ${HEADERS_LIST}) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11) -target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Qml Qt5::Quick) - -# Static version for testing -add_library("${PROJECT_NAME}Static" STATIC ${SRC_LIST} ${HEADERS_LIST}) -set_property(TARGET "${PROJECT_NAME}Static" PROPERTY CXX_STANDARD 11) -target_link_libraries("${PROJECT_NAME}Static" PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Qml Qt5::Quick) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e5a730c..6eac775 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -3,9 +3,7 @@ project(TestDynamicQObject) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -if (UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-long-long -pedantic") -endif() +include_directories(${CMAKE_SOURCE_DIR}/lib/include ${CMAKE_SOURCE_DIR}/lib/include/Qt) find_package(Qt5Test REQUIRED) diff --git a/test/test_dynamicqobject.cpp b/test/test_dynamicqobject.cpp index 95dd9d1..7050fa5 100644 --- a/test/test_dynamicqobject.cpp +++ b/test/test_dynamicqobject.cpp @@ -1,10 +1,13 @@ -#include -#include +// std #include #include +// Qt #include -#include "../src/BaseQObject.h" -#include "../src/DynamicQObject.h" +#include +#include +// DOtherSide +#include "DOtherSide/BaseQObject.h" +#include "DOtherSide/DynamicQObject.h" // Templates that convers a T to a string template