@@ -210,8 +210,12 @@ if (SQLITECPP_INCLUDE_SCRIPT)
210
210
source_group (scripts FILES ${SQLITECPP_SCRIPT} )
211
211
endif ()
212
212
213
- # add sources of the wrapper as a "SQLiteCpp" static library
214
- add_library (SQLiteCpp ${SQLITECPP_SRC} ${SQLITECPP_INC} ${SQLITECPP_DOC} ${SQLITECPP_SCRIPT} )
213
+ # Build the "SQLiteCpp" wrapper as a static library
214
+ option (SQLITECPP_BUILD_LIBRARY "Build SQLiteCpp wrapper as a library." ON )
215
+ if (SQLITECPP_BUILD_LIBRARY )
216
+ # Note: add doc and script files to display them in the Visual Studio solution
217
+ add_library (SQLiteCpp ${SQLITECPP_SRC} ${SQLITECPP_INC} ${SQLITECPP_DOC} ${SQLITECPP_SCRIPT} )
218
+ endif (SQLITECPP_BUILD_LIBRARY )
215
219
216
220
# Options relative to SQLite and SQLiteC++ functions
217
221
@@ -255,9 +259,11 @@ if (SQLITE_OMIT_LOAD_EXTENSION)
255
259
target_compile_definitions (SQLiteCpp PUBLIC SQLITE_OMIT_LOAD_EXTENSION )
256
260
endif (SQLITE_OMIT_LOAD_EXTENSION )
257
261
258
- if (UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" ))
259
- set_target_properties (SQLiteCpp PROPERTIES COMPILE_FLAGS "-fPIC" )
260
- endif (UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" ))
262
+ if (SQLITECPP_BUILD_LIBRARY )
263
+ if (UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" ))
264
+ set_target_properties (SQLiteCpp PROPERTIES COMPILE_FLAGS "-fPIC" )
265
+ endif (UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" ))
266
+ endif (SQLITECPP_BUILD_LIBRARY )
261
267
262
268
option (SQLITECPP_USE_ASAN "Use Address Sanitizer." OFF )
263
269
if (SQLITECPP_USE_ASAN )
@@ -276,16 +282,18 @@ if (SQLITECPP_USE_GCOV)
276
282
set_target_properties (SQLiteCpp PROPERTIES COMPILE_FLAGS "-fkeep-inline-functions -fkeep-static-functions" )
277
283
endif ()
278
284
279
- ## Build provided copy of SQLite3 C library ##
285
+ ## Build the SQLite3 C library, or link to the installed one
280
286
281
287
option (SQLITECPP_INTERNAL_SQLITE "Add the internal SQLite3 source to the project." ON )
282
288
if (SQLITECPP_INTERNAL_SQLITE )
283
- message (STATUS "Compile sqlite3 from source in subdirectory" )
284
- option (SQLITE_ENABLE_RTREE "Enable RTree extension when building internal sqlite3 library." OFF )
285
- option (SQLITE_ENABLE_DBSTAT_VTAB "Enable DBSTAT read-only eponymous virtual table extension when building internal sqlite3 library." OFF )
286
- # build the SQLite3 C library (for ease of use/compatibility) versus Linux sqlite3-dev package
287
- add_subdirectory (sqlite3 )
288
- target_link_libraries (SQLiteCpp PUBLIC SQLite::SQLite3 )
289
+ if (SQLITECPP_BUILD_LIBRARY )
290
+ message (STATUS "Compile sqlite3 from source in subdirectory" )
291
+ option (SQLITE_ENABLE_RTREE "Enable RTree extension when building internal sqlite3 library." OFF )
292
+ option (SQLITE_ENABLE_DBSTAT_VTAB "Enable DBSTAT read-only eponymous virtual table extension when building internal sqlite3 library." OFF )
293
+ # build the SQLite3 C library (for ease of use/compatibility) versus Linux sqlite3-dev package
294
+ add_subdirectory (sqlite3 )
295
+ target_link_libraries (SQLiteCpp PUBLIC SQLite::SQLite3 )
296
+ endif (SQLITECPP_BUILD_LIBRARY )
289
297
else (SQLITECPP_INTERNAL_SQLITE )
290
298
# When using the SQLite codec, we need to link against the sqlcipher lib & include <sqlcipher/sqlite3.h>
291
299
# So this gets the lib & header, and links/includes everything
@@ -349,44 +357,48 @@ if (SQLITECPP_DISABLE_EXPANDED_SQL)
349
357
endif (SQLITECPP_DISABLE_EXPANDED_SQL )
350
358
351
359
# Link target with pthread and dl for Unix
352
- if (UNIX )
360
+ if (UNIX AND SQLITECPP_BUILD_LIBRARY )
353
361
set (THREADS_PREFER_PTHREAD_FLAG ON )
354
362
find_package (Threads REQUIRED )
355
363
target_link_libraries (SQLiteCpp PUBLIC Threads::Threads ${CMAKE_DL_LIBS} )
356
- endif (UNIX )
364
+ endif ()
357
365
358
366
# Set includes for target and transitive downstream targets
359
367
360
- target_include_directories (SQLiteCpp
361
- PUBLIC
362
- $< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>
363
- $< INSTALL_INTERFACE:include/> )
368
+ if (SQLITECPP_BUILD_LIBRARY )
369
+ target_include_directories (SQLiteCpp
370
+ PUBLIC
371
+ $< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>
372
+ $< INSTALL_INTERFACE:include/> )
373
+ endif (SQLITECPP_BUILD_LIBRARY )
364
374
365
375
# Allow the library to be installed via "make install" and found with "find_package"
366
376
367
- include (GNUInstallDirs )
368
- install (TARGETS SQLiteCpp
369
- EXPORT ${PROJECT_NAME} Targets
370
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
371
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
372
- COMPONENT libraries )
373
- install (DIRECTORY include / DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers FILES_MATCHING REGEX ".*\\ .(hpp|h)$" )
374
- install (EXPORT ${PROJECT_NAME} Targets DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} )
375
- install (FILES ${PROJECT_SOURCE_DIR} /package.xml DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME} )
376
-
377
- include (CMakePackageConfigHelpers )
378
- write_basic_package_version_file (
379
- cmake/${PROJECT_NAME}ConfigVersion.cmake
380
- VERSION ${PROJECT_VERSION}
381
- COMPATIBILITY AnyNewerVersion )
382
- configure_package_config_file (
383
- cmake/${PROJECT_NAME}Config.cmake.in
384
- cmake/${PROJECT_NAME}Config.cmake
385
- INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} )
386
- install (FILES
387
- ${CMAKE_CURRENT_BINARY_DIR} /cmake/${PROJECT_NAME}Config.cmake
388
- ${CMAKE_CURRENT_BINARY_DIR} /cmake/${PROJECT_NAME}ConfigVersion.cmake
389
- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} )
377
+ if (SQLITECPP_BUILD_LIBRARY )
378
+ include (GNUInstallDirs )
379
+ install (TARGETS SQLiteCpp
380
+ EXPORT ${PROJECT_NAME} Targets
381
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
382
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
383
+ COMPONENT libraries )
384
+ install (DIRECTORY include / DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers FILES_MATCHING REGEX ".*\\ .(hpp|h)$" )
385
+ install (EXPORT ${PROJECT_NAME} Targets DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} )
386
+ install (FILES ${PROJECT_SOURCE_DIR} /package.xml DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME} )
387
+
388
+ include (CMakePackageConfigHelpers )
389
+ write_basic_package_version_file (
390
+ cmake/${PROJECT_NAME}ConfigVersion.cmake
391
+ VERSION ${PROJECT_VERSION}
392
+ COMPATIBILITY AnyNewerVersion )
393
+ configure_package_config_file (
394
+ cmake/${PROJECT_NAME}Config.cmake.in
395
+ cmake/${PROJECT_NAME}Config.cmake
396
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} )
397
+ install (FILES
398
+ ${CMAKE_CURRENT_BINARY_DIR} /cmake/${PROJECT_NAME}Config.cmake
399
+ ${CMAKE_CURRENT_BINARY_DIR} /cmake/${PROJECT_NAME}ConfigVersion.cmake
400
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} )
401
+ endif (SQLITECPP_BUILD_LIBRARY )
390
402
391
403
# Optional additional targets:
392
404
@@ -398,25 +410,25 @@ if (SQLITECPP_RUN_CPPLINT)
398
410
if (PYTHONINTERP_FOUND )
399
411
# add a cpplint target to the "all" target
400
412
add_custom_target (SQLiteCpp_cpplint
401
- ALL
402
- COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR} /cpplint.py ${CPPLINT_ARG_OUTPUT} ${CPPLINT_ARG_VERBOSE} ${CPPLINT_ARG_LINELENGTH} ${SQLITECPP_SRC} ${SQLITECPP_INC}
413
+ ALL
414
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR} /cpplint.py ${CPPLINT_ARG_OUTPUT} ${CPPLINT_ARG_VERBOSE} ${CPPLINT_ARG_LINELENGTH} ${SQLITECPP_SRC} ${SQLITECPP_INC}
403
415
)
404
416
endif (PYTHONINTERP_FOUND )
405
417
else ()
406
418
find_package (Python )
407
- if (PYTHON_INTERPRETER_FOUND )
419
+ if (Python_Interpreter_FOUND )
408
420
# add a cpplint target to the "all" target
409
421
add_custom_target (SQLiteCpp_cpplint
410
- ALL
411
- COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR} /cpplint.py ${CPPLINT_ARG_OUTPUT} ${CPPLINT_ARG_VERBOSE} ${CPPLINT_ARG_LINELENGTH} ${SQLITECPP_SRC} ${SQLITECPP_INC}
422
+ ALL
423
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR} /cpplint.py ${CPPLINT_ARG_OUTPUT} ${CPPLINT_ARG_VERBOSE} ${CPPLINT_ARG_LINELENGTH} ${SQLITECPP_SRC} ${SQLITECPP_INC}
412
424
)
413
- endif (PYTHON_INTERPRETER_FOUND )
425
+ endif (Python_Interpreter_FOUND )
414
426
endif ()
415
427
else (SQLITECPP_RUN_CPPLINT )
416
428
message (STATUS "SQLITECPP_RUN_CPPLINT OFF" )
417
429
endif (SQLITECPP_RUN_CPPLINT )
418
430
419
- option (SQLITECPP_RUN_CPPCHECK "Run cppcheck C++ static analysis tool." ON )
431
+ option (SQLITECPP_RUN_CPPCHECK "Run cppcheck C++ static analysis tool." OFF )
420
432
if (SQLITECPP_RUN_CPPCHECK )
421
433
find_program (CPPCHECK_EXECUTABLE NAMES cppcheck )
422
434
if (CPPCHECK_EXECUTABLE )
@@ -426,7 +438,7 @@ if (SQLITECPP_RUN_CPPCHECK)
426
438
COMMAND ${CPPCHECK_EXECUTABLE} -j 8 cppcheck --enable=style --quiet ${CPPCHECK_ARG_TEMPLATE} ${PROJECT_SOURCE_DIR} /src
427
439
)
428
440
execute_process (COMMAND "${CPPCHECK_EXECUTABLE} " --version OUTPUT_VARIABLE CPPCHECK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE )
429
- message (STATUS "Found Cppcheck: ${CPPCHECK_EXECUTABLE} ${CPPCHECK_VERSION} " )
441
+ message (STATUS "Found Cppcheck: ${CPPCHECK_EXECUTABLE} (found version ${CPPCHECK_VERSION} ) " )
430
442
else (CPPCHECK_EXECUTABLE )
431
443
message (STATUS "Could NOT find cppcheck" )
432
444
endif (CPPCHECK_EXECUTABLE )
@@ -516,4 +528,6 @@ else (SQLITECPP_BUILD_TESTS)
516
528
endif (SQLITECPP_BUILD_TESTS )
517
529
518
530
# API version for SQLiteCpp shared library.
519
- set_property (TARGET SQLiteCpp PROPERTY SOVERSION 0 )
531
+ if (SQLITECPP_BUILD_LIBRARY )
532
+ set_property (TARGET SQLiteCpp PROPERTY SOVERSION 0 )
533
+ endif (SQLITECPP_BUILD_LIBRARY )
0 commit comments