Skip to content

Commit

Permalink
#248 Tentative qt_add_module() CMake configuration.
Browse files Browse the repository at this point in the history
Still don't work. WIP.

Signed-off-by: cneben <[email protected]>
  • Loading branch information
cneben committed Sep 8, 2024
1 parent cb25c32 commit b4bdd11
Show file tree
Hide file tree
Showing 7 changed files with 97 additions and 30 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ samples/build*
.idea
.DS_Store
build-tests-*

build
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050F00)
add_subdirectory(src)

option(QUICK_QANAVA_BUILD_SAMPLES "Build QuickQanava samples" OFF)
if (${QUICK_QANAVA_BUILD_SAMPLES})
#if (${QUICK_QANAVA_BUILD_SAMPLES})
#add_subdirectory(samples/advanced)
#add_subdirectory(samples/connector)
#add_subdirectory(samples/cpp)
#add_subdirectory(samples/dataflow)
#add_subdirectory(samples/edges)
add_subdirectory(samples/groups)
#add_subdirectory(samples/navigable)
add_subdirectory(samples/nodes)
add_subdirectory(samples/layouts)
#add_subdirectory(samples/nodes)
#add_subdirectory(samples/layouts)
#add_subdirectory(samples/selection)
#add_subdirectory(samples/style)
#add_subdirectory(samples/topology)
endif()
#endif()
32 changes: 20 additions & 12 deletions samples/groups/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,39 @@ cmake_minimum_required(VERSION 3.16)

project(QuickQanava_sample_groups VERSION 2.5.0 LANGUAGES CXX)

# Configure Qt
find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2)
qt_standard_project_setup(REQUIRES 6.5)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# Configure Qt
find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:QT_QML_DEBUG>)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} "../../src")

if(NOT TARGET QuickQanava)
add_subdirectory(../../ quickqanava_build) # Use ../../src as quickqanava_build subdirectory
# see https://stackoverflow.com/questions/50408169/cmake-error-add-subdirectory-not-given-a-binary-directory/50408555
endif()

set(source_files
groups.cpp
)
qt_add_executable(sample_groups_exe groups.cpp)
qt_add_qml_module(sample_groups
VERSION 1.0
URI sample_groups
QML_FILES
groups.qml
OUTPUT_DIRECTORY sample_groups
)

include_directories(${CMAKE_CURRENT_SOURCE_DIR} "../../src")
if(NOT TARGET QuickQanava)
add_subdirectory(../../) # Use ../../src as quickqanava_build subdirectory
# see https://stackoverflow.com/questions/50408169/cmake-error-add-subdirectory-not-given-a-binary-directory/50408555
endif()

add_executable(sample_groups ${source_files} groups.qrc)
target_include_directories(sample_groups PUBLIC QuickQanava Qt${QT_VERSION_MAJOR}::QuickControls2)
target_link_libraries(sample_groups
# add_executable(sample_groups ${source_files} groups.qrc)
# target_include_directories(sample_groups PUBLIC QuickQanava Qt${QT_VERSION_MAJOR}::QuickControls2)
target_link_libraries(sample_groups_exe PUBLIC
QuickQanava
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Expand Down
2 changes: 1 addition & 1 deletion samples/groups/groups.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ int main( int argc, char** argv )
QGuiApplication app(argc, argv);
QQuickStyle::setStyle("Material");
QQmlApplicationEngine engine;
QuickQanava::initialize(&engine);
//QuickQanava::initialize(&engine);
engine.load(QUrl("qrc:/groups.qml"));
return app.exec();
}
Expand Down
7 changes: 4 additions & 3 deletions samples/groups/groups.qml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Shapes

import QuickQanava 2.0 as Qan
import "qrc:/QuickQanava" as Qan
import "." as Qan
import QuickQanava as Qan
//import QuickQanava 2.0 as Qan
//import "qrc:/QuickQanava" as Qan
//import "." as Qan

ApplicationWindow {
id: window
Expand Down
4 changes: 2 additions & 2 deletions samples/layouts/layouts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ int main( int argc, char** argv )
QGuiApplication app(argc, argv);
QQuickStyle::setStyle("Material");
QQmlApplicationEngine* engine = new QQmlApplicationEngine();
engine->addPluginPath(QStringLiteral("../../src")); // Necessary only for development when plugin is not installed to QTDIR/qml
QuickQanava::initialize(engine);
//engine->addPluginPath(QStringLiteral("../../src")); // Necessary only for development when plugin is not installed to QTDIR/qml
//QuickQanava::initialize(engine);
engine->load(QUrl("qrc:/layouts.qml"));
const auto status = app.exec();
delete engine;
Expand Down
72 changes: 64 additions & 8 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,21 +97,77 @@ set (qan_plugin_files
${CMAKE_CURRENT_SOURCE_DIR}/qanPlugin.h
)

set(qan_qml_files
NavigablePreview.qml
GraphPreview.qml
HeatMapPreview.qml
LineGrid.qml
Edge.qml
EdgeTemplate.qml
EdgeStraightPath.qml
EdgeOrthoPath.qml
EdgeCurvedPath.qml
EdgeSrcArrowPath.qml
EdgeSrcCirclePath.qml
EdgeSrcRectPath.qml
EdgeDstArrowPath.qml
EdgeDstCirclePath.qml
EdgeDstRectPath.qml
GraphView.qml
Node.qml
Port.qml
VerticalDock.qml
HorizontalDock.qml
Group.qml
TableGroup.qml
TableCell.qml
TableBorder.qml
RectGroupTemplate.qml
CanvasNodeTemplate.qml
RectNodeTemplate.qml
RectSolidBackground.qml
RectSolidShadowBackground.qml
RectShadowEffect.qml
RectSolidGlowBackground.qml
RectGlowEffect.qml
RectGradientBackground.qml
RectGradientShadowBackground.qml
RectGradientGlowBackground.qml
SelectionItem.qml
VisualConnector.qml
LabelEditor.qml
OriginCross.qml
)

# Configure Qt
set(CMAKE_AUTOMOC ON)
qt_wrap_cpp(qan_source_files, qan_header_files) # Creates .moc files from sources
set(CMAKE_AUTORCC ON)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:QT_QML_DEBUG>)

# Configure QuickQanava library ###############################################
list(APPEND qan_resources QuickQanava_static.qrc)
add_library(QuickQanava STATIC
${qan_source_files}
${qan_header_files}
${quickcontainers_source_files}
${quickcontainers_header_files}
${qan_resources}
)

# FIXME #248
# list(APPEND qan_resources QuickQanava_static.qrc)
# add_library(QuickQanava STATIC
# ${qan_source_files}
# ${qan_header_files}
# ${quickcontainers_source_files}
# ${quickcontainers_header_files}
# ${qan_resources}
# )

qt_add_library(QuickQanava STATIC)
qt_add_qml_module(QuickQanava
URI QuickQanava
VERSION 2.5
SOURCES
${qan_source_files} ${qan_header_files} ${quickcontainers_source_files} ${quickcontainers_header_files}
QML_FILES
${qan_qml_files}
RESOURCE_PREFIX /QuickQanava
OUTPUT_DIRECTORY QuickQanava
)

target_include_directories(QuickQanava
PUBLIC
Expand Down

0 comments on commit b4bdd11

Please sign in to comment.