Skip to content

Commit 4e50461

Browse files
committedOct 30, 2021
[delimited text] Unlock static build support
1 parent c94c741 commit 4e50461

11 files changed

+128
-45
lines changed
 

‎src/core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2134,6 +2134,7 @@ if (FORCE_STATIC_LIBS)
21342134
target_link_libraries(qgis_core
21352135
provider_wms_a
21362136
provider_postgres_a
2137+
provider_delimitedtext_a
21372138
)
21382139

21392140
if (WITH_AUTH)

‎src/core/providers/qgsproviderregistry.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#ifdef HAVE_STATIC_PROVIDERS
4646
#include "qgswmsprovider.h"
4747
#include "qgspostgresprovider.h"
48+
#include "qgsdelimitedtextprovider.h"
4849
#endif
4950

5051
#include <QString>
@@ -191,6 +192,7 @@ void QgsProviderRegistry::init()
191192
#ifdef HAVE_STATIC_PROVIDERS
192193
mProviders[ QgsWmsProvider::providerKey() ] = new QgsWmsProviderMetadata();
193194
mProviders[ QgsPostgresProvider::providerKey() ] = new QgsPostgresProviderMetadata();
195+
mProviders[ QgsDelimitedTextProvider::providerKey() ] = new QgsDelimitedTextProviderMetadata();
194196
#endif
195197

196198
// add dynamic providers

‎src/gui/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,6 +1545,7 @@ if (FORCE_STATIC_LIBS)
15451545
target_link_libraries(qgis_gui
15461546
provider_wms_gui_a
15471547
provider_postgres_gui_a
1548+
provider_delimitedtext_gui_a
15481549
)
15491550
endif()
15501551

‎src/gui/qgsproviderguiregistry.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#ifdef HAVE_STATIC_PROVIDERS
3737
#include "qgswmsprovidergui.h"
3838
#include "qgspostgresprovidergui.h"
39+
#include "qgsdelimitedtextprovidergui.h"
3940
#endif
4041

4142
/**
@@ -95,6 +96,9 @@ void QgsProviderGuiRegistry::loadStaticProviders( )
9596

9697
QgsProviderGuiMetadata *postgres = new QgsPostgresProviderGuiMetadata();
9798
mProviders[ postgres->key() ] = postgres;
99+
100+
QgsProviderGuiMetadata *delimitedtext = new QgsDelimitedTextProviderGuiMetadata();
101+
mProviders[ delimitedtext->key() ] = delimitedtext;
98102
#endif
99103
}
100104

‎src/providers/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/${QGIS_PLUGIN_SUBDI
44

55
# providers with implemented both static and dynamic building
66
add_subdirectory(wms)
7+
add_subdirectory(delimitedtext)
78
if (POSTGRES_FOUND)
89
add_subdirectory(postgres)
910
endif()
1011

1112
if (NOT FORCE_STATIC_LIBS)
1213
add_subdirectory(arcgisrest)
13-
add_subdirectory(delimitedtext)
1414
add_subdirectory(geonode)
1515
add_subdirectory(mssql)
1616
add_subdirectory(wcs)
Lines changed: 70 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,97 @@
1-
2-
########################################################
3-
# Files
4-
51
set (DTEXT_SRCS
62
qgsdelimitedtextfeatureiterator.cpp
73
qgsdelimitedtextprovider.cpp
84
qgsdelimitedtextfile.cpp
95
)
106

117
if (WITH_GUI)
12-
set(DTEXT_SRCS ${DTEXT_SRCS}
8+
set(DTEXT_GUI_SRCS
139
qgsdelimitedtextprovidergui.cpp
1410
qgsdelimitedtextsourceselect.cpp
1511
)
16-
endif()
1712

18-
########################################################
19-
# Build
13+
set(DTEXT_UIS qgsdelimitedtextsourceselectbase.ui)
14+
endif()
2015

21-
include_directories(
16+
# static library
17+
add_library(provider_delimitedtext_a STATIC ${DTEXT_SRCS})
2218

23-
${CMAKE_BINARY_DIR}/src/ui
19+
target_include_directories(provider_delimitedtext_a PUBLIC
20+
${CMAKE_SOURCE_DIR}/src/providers/delimitedtext
2421
)
2522

26-
add_library(provider_delimitedtext MODULE ${DTEXT_SRCS})
23+
target_link_libraries(provider_delimitedtext_a
24+
qgis_core
25+
)
2726

2827
# require c++17
29-
target_compile_features(provider_delimitedtext PRIVATE cxx_std_17)
28+
target_compile_features(provider_delimitedtext_a PRIVATE cxx_std_17)
3029

31-
target_link_libraries(provider_delimitedtext
32-
qgis_core
33-
)
30+
target_compile_definitions(provider_delimitedtext_a PRIVATE "-DQT_NO_FOREACH")
3431

3532
if (WITH_GUI)
36-
target_link_libraries (provider_delimitedtext
33+
if (WITH_QT6)
34+
QT6_WRAP_UI(DTEXT_UIS_H ${DTEXT_UIS})
35+
else()
36+
QT5_WRAP_UI(DTEXT_UIS_H ${DTEXT_UIS})
37+
endif()
38+
39+
add_library(provider_delimitedtext_gui_a STATIC ${DTEXT_GUI_SRCS} ${DTEXT_UIS_H})
40+
41+
target_include_directories(provider_delimitedtext_gui_a PUBLIC
42+
${CMAKE_BINARY_DIR}/src/providers/delimitedtext
43+
)
44+
45+
target_link_libraries(provider_delimitedtext_gui_a
3746
qgis_gui
3847
)
39-
add_dependencies(provider_delimitedtext ui)
40-
endif()
4148

42-
target_compile_definitions(provider_delimitedtext PRIVATE "-DQT_NO_FOREACH")
49+
# require c++17
50+
target_compile_features(provider_delimitedtext_gui_a PRIVATE cxx_std_17)
4351

44-
# clang-tidy
45-
if(CLANG_TIDY_EXE)
46-
set_target_properties(
47-
provider_delimitedtext PROPERTIES
48-
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
49-
)
52+
target_compile_definitions(provider_delimitedtext_gui_a PRIVATE "-DQT_NO_FOREACH")
53+
54+
add_dependencies(provider_delimitedtext_gui_a ui)
5055
endif()
5156

52-
########################################################
53-
# Install
57+
if (FORCE_STATIC_LIBS)
58+
# for (external) mobile apps to be able to pick up provider for linking
59+
install (TARGETS provider_delimitedtext_a ARCHIVE DESTINATION ${QGIS_PLUGIN_DIR})
60+
if (WITH_GUI)
61+
install (TARGETS provider_delimitedtext_a ARCHIVE DESTINATION ${QGIS_PLUGIN_DIR})
62+
endif()
63+
else()
64+
add_library(provider_delimitedtext MODULE ${DTEXT_SRCS} ${DTEXT_GUI_SRCS})
65+
66+
# require c++17
67+
target_compile_features(provider_delimitedtext PRIVATE cxx_std_17)
68+
69+
target_link_libraries(provider_delimitedtext
70+
qgis_core
71+
)
72+
73+
if (WITH_GUI)
74+
target_link_libraries (provider_delimitedtext
75+
qgis_gui
76+
)
77+
add_dependencies(provider_delimitedtext ui)
78+
endif()
79+
80+
# clang-tidy
81+
if(CLANG_TIDY_EXE)
82+
set_target_properties(
83+
provider_delimitedtext_a PROPERTIES
84+
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
85+
)
86+
set_target_properties(
87+
provider_delimitedtext PROPERTIES
88+
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
89+
)
90+
endif()
5491

55-
install (TARGETS provider_delimitedtext
56-
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
57-
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
92+
install (TARGETS provider_delimitedtext
93+
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
94+
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
95+
96+
target_compile_definitions(provider_delimitedtext PRIVATE "-DQT_NO_FOREACH")
97+
endif()

‎src/providers/delimitedtext/qgsdelimitedtextprovider.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,6 +1257,11 @@ QString QgsDelimitedTextProvider::name() const
12571257
return TEXT_PROVIDER_KEY;
12581258
}
12591259

1260+
QString QgsDelimitedTextProvider::providerKey()
1261+
{
1262+
return TEXT_PROVIDER_KEY;
1263+
}
1264+
12601265
QString QgsDelimitedTextProvider::description() const
12611266
{
12621267
return TEXT_PROVIDER_DESCRIPTION;
@@ -1330,7 +1335,9 @@ QgsDelimitedTextProviderMetadata::QgsDelimitedTextProviderMetadata():
13301335
{
13311336
}
13321337

1338+
#ifndef HAVE_STATIC_PROVIDERS
13331339
QGISEXTERN QgsProviderMetadata *providerMetadataFactory()
13341340
{
13351341
return new QgsDelimitedTextProviderMetadata();
13361342
}
1343+
#endif

‎src/providers/delimitedtext/qgsdelimitedtextprovider.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ class QgsDelimitedTextProvider final: public QgsVectorDataProvider
135135
*/
136136
QStringList readCsvtFieldTypes( const QString &filename, QString *message = nullptr );
137137

138+
static QString providerKey();
139+
138140
private slots:
139141

140142
void onFileUpdated();

‎src/providers/delimitedtext/qgsdelimitedtextprovidergui.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
* *
1414
***************************************************************************/
1515

16+
#include "qgsdelimitedtextprovidergui.h"
17+
1618
#include "qgsapplication.h"
1719
#include "qgsproviderguimetadata.h"
1820
#include "qgssourceselectprovider.h"
@@ -36,24 +38,21 @@ class QgsDelimitedTextSourceSelectProvider : public QgsSourceSelectProvider
3638
};
3739

3840

39-
class QgsDelimitedTextProviderGuiMetadata: public QgsProviderGuiMetadata
41+
QgsDelimitedTextProviderGuiMetadata::QgsDelimitedTextProviderGuiMetadata()
42+
: QgsProviderGuiMetadata( QgsDelimitedTextProvider::TEXT_PROVIDER_KEY )
4043
{
41-
public:
42-
QgsDelimitedTextProviderGuiMetadata()
43-
: QgsProviderGuiMetadata( QgsDelimitedTextProvider::TEXT_PROVIDER_KEY )
44-
{
45-
}
46-
47-
QList<QgsSourceSelectProvider *> sourceSelectProviders() override
48-
{
49-
QList<QgsSourceSelectProvider *> providers;
50-
providers << new QgsDelimitedTextSourceSelectProvider;
51-
return providers;
52-
}
53-
};
44+
}
5445

46+
QList<QgsSourceSelectProvider *> QgsDelimitedTextProviderGuiMetadata::sourceSelectProviders()
47+
{
48+
QList<QgsSourceSelectProvider *> providers;
49+
providers << new QgsDelimitedTextSourceSelectProvider;
50+
return providers;
51+
}
5552

53+
#ifndef HAVE_STATIC_PROVIDERS
5654
QGISEXTERN QgsProviderGuiMetadata *providerGuiMetadataFactory()
5755
{
5856
return new QgsDelimitedTextProviderGuiMetadata();
5957
}
58+
#endif
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/***************************************************************************
2+
qgsdelimitedtextprovidergui.h
3+
--------------------------------------
4+
Date : June 2019
5+
Copyright : (C) 2019 by Martin Dobias
6+
Email : wonder dot sk at gmail dot com
7+
***************************************************************************
8+
* *
9+
* This program is free software; you can redistribute it and/or modify *
10+
* it under the terms of the GNU General Public License as published by *
11+
* the Free Software Foundation; either version 2 of the License, or *
12+
* (at your option) any later version. *
13+
* *
14+
***************************************************************************/
15+
16+
#include "qgsproviderguimetadata.h"
17+
#include "qgssourceselectprovider.h"
18+
#include "qgsdelimitedtextsourceselect.h"
19+
20+
class QgsDelimitedTextProviderGuiMetadata: public QgsProviderGuiMetadata
21+
{
22+
public:
23+
QgsDelimitedTextProviderGuiMetadata();
24+
25+
QList<QgsSourceSelectProvider *> sourceSelectProviders() override;
26+
};

‎src/providers/postgres/qgspostgresprovidergui.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "qgspostgresdataitemguiprovider.h"
2626
#include "raster/qgspostgresrastertemporalsettingswidget.h"
2727

28+
2829
//! Provider for postgres source select
2930
class QgsPostgresSourceSelectProvider : public QgsSourceSelectProvider //#spellok
3031
{

0 commit comments

Comments
 (0)
Please sign in to comment.