Added install directive in CMakeLists and restructured the project

This commit is contained in:
Filippo Cucchetto 2015-11-23 21:33:17 +01:00
parent a137cae07b
commit 87603e9239
23 changed files with 105 additions and 82 deletions

View File

@ -1,3 +1,3 @@
cmake_minimum_required(VERSION 3.0)
add_subdirectory(src)
add_subdirectory(lib)
add_subdirectory(test)

59
lib/CMakeLists.txt Normal file
View File

@ -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
)

View File

@ -1,8 +1,11 @@
#pragma once
#include "DOtherSideTypes.h"
#include "DynamicQObject.h"
// Qt
#include <QAbstractListModel>
// 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<QAbstractListModel>

View File

@ -1,5 +1,5 @@
#pragma once
#include "DynamicQObject.h"
#include "DOtherSide/DynamicQObject.h"
using BaseQObject = DynamicQObject<QObject>;

View File

@ -7,7 +7,7 @@
#define DOS_API
#endif
#include "DOtherSideTypes.h"
#include <DOtherSide/DOtherSideTypes.h>
#ifdef __cplusplus
extern "C"

View File

@ -1,6 +1,8 @@
#pragma once
// std
#include <memory>
// Qt
#include <QtCore/QString>
#include <QtCore/QMetaType>

View File

@ -1,16 +1,18 @@
#pragma once
// std
#include <memory>
#include <array>
// Qt
#include <QtCore/QObject>
#include <QtCore/QScopedPointer>
#include <QtCore/QDebug>
#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 <class T>

View File

@ -1,7 +1,8 @@
#pragma once
// std
#include <memory>
// Qt
#include <QtCore/QMetaType>
#include <QtCore/QString>
#include <QtCore/QMetaType>

View File

@ -1,8 +1,9 @@
#pragma once
// std
#include <memory>
#include <functional>
// Qt
#include <QtCore/QList>
#include <QtCore/QMetaType>
#include <QtCore/QVariant>
@ -10,7 +11,6 @@
#include <QtCore/QString>
#include <QtCore/QVariant>
#include <QtCore/QMetaType>
#include "private/qmetaobjectbuilder_p.h"
class QString;

View File

@ -1,8 +1,11 @@
#pragma once
#include <QVariant>
// std
#include <vector>
#include "IDynamicQObject.h"
// Qt
#include <QVariant>
// DOtherSide
#include "DOtherSide/IDynamicQObject.h"
class DynamicSlot;

View File

@ -1,4 +1,4 @@
#include "DOtherSide.h"
#include "DOtherSide/DOtherSide.h"
#include <iostream>
@ -12,10 +12,10 @@
#include <QtQuick/QQuickView>
#include <QtWidgets/QApplication>
#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)
{

View File

@ -1,4 +1,4 @@
#include "DynamicProperty.h"
#include "DOtherSide/DynamicProperty.h"
struct DynamicProperty::PropertyData final
{

View File

@ -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<QMetaType::Type>& 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
{

View File

@ -1,4 +1,4 @@
#include "DynamicSlot.h"
#include "DOtherSide/DynamicSlot.h"
struct DynamicSlot::SlotData
{

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -1,10 +1,13 @@
#include <QTest>
#include <QSignalSpy>
// std
#include <tuple>
#include <iostream>
// Qt
#include <QDebug>
#include "../src/BaseQObject.h"
#include "../src/DynamicQObject.h"
#include <QTest>
#include <QSignalSpy>
// DOtherSide
#include "DOtherSide/BaseQObject.h"
#include "DOtherSide/DynamicQObject.h"
// Templates that convers a T to a string
template <typename T>