11cmake_minimum_required (VERSION 3.0)
2- project (qsqlcipher )
2+ project (libqt5sql5-sqlcipher )
33
44set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH} ;${PROJECT_SOURCE_DIR} /cmake/" )
5- SET (CMAKE_PREFIX_PATH "D:/Qt/5.9.2/msvc2017_64/lib/cmake/" )
5+
6+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
7+ SET (CMAKE_PREFIX_PATH "C:/Qt/5.9.2/msvc2017_64/lib/cmake/" )
8+ else ()
9+ SET (CMAKE_PREFIX_PATH "C:/Qtx86/5.9.2/msvc2015/lib/cmake/" )
10+ endif ()
611
712find_package (Qt5Sql REQUIRED)
8- find_package (PkgConfig REQUIRED)
913
1014if (NOT WIN32 )
15+ find_package (PkgConfig REQUIRED)
1116 pkg_check_modules(SQLCIPHER REQUIRED sqlcipher)
1217else ()
18+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
19+ set (_lib_suffix_win "x64" )
20+ else ()
21+ set (_lib_suffix_win "x86" )
22+ endif ()
23+
24+ # Change this by hand if needed
25+ set (Libsqlcipher_INCLUDE_DIRS "C:/CppProjects/sqlcipher/include" )
26+ # Change this by hand if needed
27+ set (Libsqlcipher_LIBRARIES "optimized;C:/CppProjects/sqlcipher/compile/${_lib_suffix_win} /Release/sqlite3.lib;debug;C:/CppProjects/sqlcipher/compile/${_lib_suffix_win} /Debug/sqlite3.lib" )
28+
1329 find_package (Libsqlcipher REQUIRED)
1430endif ()
1531
@@ -19,9 +35,16 @@ set(CMAKE_AUTOMOC ON)
1935# Arrange output paths so that the plugin is found in the default search path
2036# relative to the test binary.
2137set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
22- set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /sqldrivers)
38+ if (NOT WIN32 )
39+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /sqldrivers)
40+ else ()
41+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} /Debug/sqldrivers)
42+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} /Release/sqldrivers)
43+ endif ()
2344
2445option (QSQLCIPHER_STATIC "Build plugin as a static library" OFF )
46+ option (QSQLCIPHER_BUILD_TESTS "Build the test binary" ON )
47+ set (QSQLCIPHER_COPYTO_DIR "" CACHE PATH "If set, the build artifact of the library will be copied there" )
2548
2649set (CMAKE_CXX_STANDARD 14)
2750set (CMAKE_CXX_STANDARD_REQUIRED ON )
@@ -83,27 +106,62 @@ add_library(qsqlcipher ${LIBTYPE}
83106 "${_PRIVATE_SOURCES_DIRECTORY} /qsql_sqlite.cpp"
84107)
85108
86- if (WIN32 )
87- # Change this by hand if needed
88- set (SQLCIPHER_INCLUDE_DIRS "D:/CppProjects/sqlcipher-original" )
89- endif ()
90-
91109target_include_directories (qsqlcipher PRIVATE
92110 ${Qt5Sql_PRIVATE_INCLUDE_DIRS}
93111 ${SQLCIPHER_INCLUDE_DIRS} ${Libsqlcipher_INCLUDE_DIRS}
94112)
95113
96- if (WIN32 )
97- # Change this by hand if needed
98- set (SQLCIPHER_LIBRARIES "optimized;D:/CppProjects/sqlcipher-original-build/Retail/x64/sqlite3.lib;debug;D:/CppProjects/sqlcipher-original-build/Debug/x64/sqlite3.lib" )
99- endif ()
100-
101114target_link_libraries (qsqlcipher
102115 Qt5::Sql
103116 ${SQLCIPHER_LIBRARIES} ${Libsqlcipher_LIBRARIES}
104117)
105118
106- include (CTest)
107- if (BUILD_TESTING)
119+ if (NOT ("${QSQLCIPHER_COPYTO_DIR} " STREQUAL "" ))
120+ add_custom_command (TARGET qsqlcipher POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:qsqlcipher> ${QSQLCIPHER_COPYTO_DIR} /$<TARGET_FILE_NAME:qsqlcipher>)
121+ endif ()
122+
123+ find_program (DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems" )
124+ if (NOT WIN32 )
125+ if (DPKG_PROGRAM)
126+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
127+ INSTALL (TARGETS qsqlcipher DESTINATION lib/x86_64-linux-gnu/qt5/plugins/sqldrivers)
128+ else ()
129+ INSTALL (TARGETS qsqlcipher DESTINATION lib/i386-linux-gnu/qt5/plugins/sqldrivers)
130+ endif ()
131+ else ()
132+ message (WARNING "Packaging is not set up for this platform, either submit a ticket or change/add pathes yourself, if packaging is required." )
133+ INSTALL (TARGETS qsqlcipher DESTINATION sqldrivers)
134+ endif ()
135+ else ()
136+ INSTALL (TARGETS qsqlcipher DESTINATION sqldrivers)
137+ endif ()
138+
139+ #include(CTest)
140+ if (QSQLCIPHER_BUILD_TESTS)
108141 add_subdirectory (${TEST_DIR} )
109142endif ()
143+
144+ # Packaging
145+ SET (CPACK_PACKAGE_NAME "libqt5sql5-sqlcipher" )
146+ SET (CPACK_PACKAGE_CONTACT
"[email protected] " )
147+
148+ SET (CPACK_PACKAGE_VERSION_MAJOR "0" )
149+ SET (CPACK_PACKAGE_VERSION_MINOR "1" )
150+ SET (CPACK_PACKAGE_VERSION_PATCH "1" )
151+ SET (CPACK_PACKAGE_VERSION_REVISION "1" )
152+ SET (CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR} .${CPACK_PACKAGE_VERSION_MINOR} .${CPACK_PACKAGE_VERSION_PATCH} " )
153+
154+ if (DPKG_PROGRAM)
155+ execute_process (COMMAND ${DPKG_PROGRAM} --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
156+ SET (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME} _${CPACK_PACKAGE_VERSION} -${CPACK_PACKAGE_VERSION_REVISION} _${CPACK_DEBIAN_PACKAGE_ARCHITECTURE} " )
157+ else (DPKG_PROGRAM)
158+ SET (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME} _${CPACK_PACKAGE_VERSION} -${CPACK_PACKAGE_VERSION_REVISION} _${CMAKE_SYSTEM_NAME} " )
159+ SET (CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64" )
160+ endif (DPKG_PROGRAM)
161+
162+ SET (CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5sql5, libsqlcipher0 (>= 3.4.1-1)" )
163+ SET (DEBIAN_PACKAGE_BUILDS_DEPENDS "debhelper (>= 9), cmake (>= 3), qt5-qmake, qtbase5-dev, qtbase5-private-dev, qtbase5-dev-tools, qtmultimedia5-dev, gcc, g++" )
164+ SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Qt5 wrapper for using SqlCipher as a QSqlDriver." )
165+ SET (CPACK_DEBIAN_PACKAGE_SECTION "libs" )
166+
167+ INCLUDE (CPack)
0 commit comments