Skip to content

Commit 29cac93

Browse files
committed
Added auto-downloader to CMake.
1 parent 4add071 commit 29cac93

File tree

1 file changed

+52
-1
lines changed

1 file changed

+52
-1
lines changed

CMakeLists.txt

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
2222
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/sqldrivers)
2323

2424
option(STATIC "Build plugin as a static library" OFF)
25+
26+
set(CMAKE_CXX_STANDARD 14)
27+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
28+
if(CMAKE_COMPILER_IS_GNUCC)
29+
# Set standard flags for GCC
30+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
31+
endif()
32+
2533
if(STATIC)
2634
set(LIBTYPE STATIC)
2735
add_definitions(-DQT_STATICPLUGIN)
@@ -32,9 +40,52 @@ else()
3240
set(TEST_DIR test-shared)
3341
endif()
3442

43+
if (Qt5Sql_FOUND)
44+
message(STATUS "Found Qt5 version ${Qt5Sql_VERSION}.")
45+
if (Qt5Sql_VERSION VERSION_LESS 5.8.0)
46+
set(DOWNLOAD_PATH "src/sql/drivers/sqlite")
47+
else()
48+
set(DOWNLOAD_PATH "src/plugins/sqldrivers/sqlite")
49+
endif()
50+
51+
# # Check whether the patch version is 0
52+
# string(REPLACE "." ";" Qt5Sql_VERSION_LIST ${Qt5Sql_VERSION})
53+
# list(GET Qt5Sql_VERSION_LIST 0 Qt5Sql_VERSION_MAJOR)
54+
# list(GET Qt5Sql_VERSION_LIST 1 Qt5Sql_VERSION_MINOR)
55+
# list(GET Qt5Sql_VERSION_LIST 2 Qt5Sql_VERSION_PATCH)
56+
# if ("${Qt5Sql_VERSION_PATCH}" STREQUAL "0")
57+
# message(STATUS "Qt5 Patch version is zero.")
58+
# else()
59+
# message(STATUS "Qt5 Patch version not zero.")
60+
# endif()
61+
set(URL_HEADER "https://raw.githubusercontent.com/qt/qtbase/v${Qt5Sql_VERSION}/${DOWNLOAD_PATH}/qsql_sqlite_p.h")
62+
set(URL_CPP "https://raw.githubusercontent.com/qt/qtbase/v${Qt5Sql_VERSION}/${DOWNLOAD_PATH}/qsql_sqlite.cpp")
63+
message(STATUS "URL = ${URL_HEADER}")
64+
65+
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}")
66+
include_directories("${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}")
67+
68+
file(DOWNLOAD URL_HEADER "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qsql_sqlite_p.h" STATUS STATUS_HEADER_LIST TLS_VERIFY on)
69+
file(DOWNLOAD URL_CPP "${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qsql_sqlite.cpp" STATUS STATUS_CPP_LIST TLS_VERIFY on)
70+
71+
list(GET STATUS_HEADER_LIST 0 STATUS_HEADER)
72+
list(GET STATUS_CPP_LIST 0 STATUS_CPP)
73+
if ((NOT "${STATUS_HEADER}" STREQUAL "0") OR (NOT "${STATUS_CPP}" STREQUAL "0"))
74+
list(GET STATUS_HEADER_LIST 1 STATUS_HEADER_ERROR)
75+
list(GET STATUS_CPP_LIST 1 STATUS_CPP_ERROR)
76+
message(SEND_ERROR "Could not download required Qt5 private header/source files. Please report this error! Qt Version: ${Qt5Sql_VERSION}. Result Header: ${STATUS_HEADER}. Error: ${STATUS_HEADER_ERROR}. Result Source: ${STATUS_CPP}. Error: ${STATUS_CPP_ERROR}.")
77+
else()
78+
message(STATUS "Downloaded required header/source files for your Qt5 version.")
79+
endif()
80+
endif()
81+
82+
if (QT5_FOUND)
83+
message(STATUS "Found Qt5 version B ${QT_MAJOR_VERSION}.${QT_MINOR_VERSION}.${QT_PATCH_VERSION}")
84+
endif()
85+
3586
add_library(qsqlcipher ${LIBTYPE}
3687
smain.cpp
37-
qt-private/qsql_sqlite.cpp
88+
"${CMAKE_BINARY_DIR}/qt-private-from-git-version-${Qt5Sql_VERSION}/qsql_sqlite.cpp"
3889
)
3990

4091
if (WIN32)

0 commit comments

Comments
 (0)