cmake_minimum_required(VERSION 3.1.0) project(pglaball) set (CMAKE_PREFIX_PATH /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/cmake) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") find_package(PkgConfig REQUIRED) # include(CheckCXXCompilerFlag) # # # Check for standard to use # check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17) # if(HAVE_FLAG_STD_CXX17) # # Have -std=c++17, use it # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") # else() # check_cxx_compiler_flag(-std=c++1z HAVE_FLAG_STD_CXX1Z) # if(HAVE_FLAG_STD_CXX1Z) # # Have -std=c++1z, use it # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z") # else() # check_cxx_compiler_flag(-std=c++14 HAVE_FLAG_STD_CXX14) # if(HAVE_FLAG_STD_CXX14) # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") # endif() # # # And so on and on... # endif() # endif() set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_options( -Wall -fpic -march=native ) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og") # Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) pkg_check_modules(Botan REQUIRED botan-2) include_directories( ${Botan_INCLUDE_DIRS} ) pkg_check_modules(Pq REQUIRED libpq) include_directories( ${Pq_INCLUDE_DIRS} ) find_package(Qt5Widgets 5.7 REQUIRED) include_directories( ${Qt5Widgets_INCLUDE_DIRS} ) find_package(fmt 4.0 REQUIRED) include_directories( ${fmt_INCLUDE_DIRS} ) #find_package(Libevent 2.0 REQUIRED) #include_directories( ${Libevent_INCLUDE_DIRS} ) find_package(Boost 1.63 COMPONENTS system REQUIRED ) include_directories( ${Boost_INCLUDE_DIRS} ) find_package(GTest REQUIRED) add_library(core STATIC core/BackupFormatModel.cpp core/CsvWriter.cpp core/my_boost_assert_handler.cpp core/PasswordManager.cpp core/SqlLexer.cpp) add_library(pgsql STATIC pgsql/Pgsql_Connection.cpp pgsql/Pgsql_Params.cpp pgsql/Pgsql_Result.cpp pgsql/Pgsql_Row.cpp pgsql/Pgsql_Value.cpp) add_executable(pglab pglab/ASyncDBConnection.cpp pglab/ASyncWindow.cpp pglab/BackupDialog.cpp pglab/BackupRestore.cpp pglab/ConnectionConfig.cpp pglab/ConnectionList.cpp pglab/ConnectionListModel.cpp pglab/ConnectionManagerWindow.cpp pglab/DatabaseInspectorWidget.cpp pglab/DatabasesTableModel.cpp pglab/DatabaseWindow.cpp pglab/ExplainTreeModelItem.cpp pglab/GlobalIoService.cpp pglab/jsoncpp.cpp pglab/main.cpp pglab/MainWindow.cpp pglab/MasterController.cpp pglab/OpenDatabase.cpp pglab/ParamListModel.cpp pglab/ParamTypeDelegate.cpp pglab/PgAuthIdContainer.cpp pglab/PgAuthId.cpp pglab/PgClass.cpp pglab/PgDatabaseCatalogue.cpp pglab/PgDatabaseContainer.cpp pglab/PgDatabase.cpp pglab/PgNamespace.cpp pglab/PgTypeContainer.cpp pglab/PgType.cpp pglab/ProcessStdioWidget.cpp pglab/QueryExplainModel.cpp pglab/QueryResultModel.cpp pglab/QueryTab.cpp pglab/RolesTableModel.cpp pglab/ServerWindow.cpp pglab/SqlSyntaxHighlighter.cpp pglab/stopwatch.cpp pglab/tsqueue.cpp pglab/tuplesresultwidget.cpp pglab/TypeSelectionItemModel.cpp pglab/util.cpp pglab/resources.qrc ) target_include_directories(pglab PRIVATE ./core ./pgsql ) target_link_libraries( pglab core pgsql ${Boost_LIBRARIES} Qt5::Widgets ${Pq_LIBRARIES} ${Botan_LIBRARIES} pthread ) add_executable(runtests tests/main.cpp tests/tst_CsvWriter.cpp tests/tst_expected.cpp tests/tst_PasswordManager.cpp tests/tst_scopeguard.cpp tests/tst_SqlLexer.cpp ) target_include_directories(runtests PRIVATE ./core ${GTEST_INCLUDE_DIRS}) target_link_libraries(runtests core ${GTEST_LIBRARIES} ${Botan_LIBRARIES} Qt5::Widgets pthread ) enable_testing() add_test(tests runtests)