Skip to content
Snippets Groups Projects
CMakeLists.txt 2.64 KiB
Newer Older
Tomáš Kořistka's avatar
Tomáš Kořistka committed
cmake_minimum_required(VERSION 3.0)

set(CMAKE_CXX_STANDARD 17)

Tomáš Kořistka's avatar
Tomáš Kořistka committed
set(TARGET_NAME Querying)
Tomáš Kořistka's avatar
Tomáš Kořistka committed
project(${TARGET_NAME})

# Check the build type and ask the user to set concrete one
if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE RelWithDebInfo)
    message(WARNING "CMAKE_BUILD_TYPE is not set, forcing to RelWithDebInfo")
endif ()

# Set compiler flags
if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
    set(CMAKE_CXX_FLAGS "-std=c++17 -Wall -Wextra")
    set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
    set(CMAKE_CXX_FLAGS_RELEASE "-O3")
    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g3")
    set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os")
endif ()

find_package(Qt5Widgets REQUIRED)
find_package(Qt5Network REQUIRED)

include_directories(
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}
)

# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)

# Add subdirectory SQLiteCpp with all necessary files
add_subdirectory(lib/SQLiteCpp)


# Source files
set(SOURCES
        src/ui_wt/MainPage.cpp
Tomáš Kořistka's avatar
Tomáš Kořistka committed
        src/ui/forms/mainform.cpp
        src/ui/widgets/textedit.cpp
weirdwizardthomas's avatar
weirdwizardthomas committed
        src/calculation/InvertedIndex.cpp src/calculation/InvertedIndex.h
        src/util/InvertedIndexJSONParser.cpp src/util/InvertedIndexJSONParser.h
        src/calculation/Space.cpp src/calculation/Space.h
        src/calculation/Query.cpp src/calculation/Query.h
        src/calculation/Computor.cpp src/calculation/Computor.h
        src/calculation/WeightedDocument.cpp src/calculation/WeightedDocument.h
weirdwizardthomas's avatar
weirdwizardthomas committed
        src/util/QueryJSONParser.cpp src/util/QueryJSONParser.h
Tomáš Kořistka's avatar
Tomáš Kořistka committed
        src/exceptions/Exceptions.h
        src/database/Terms.cpp src/database/Terms.h
        src/database/DocumentCollection.cpp src/database/DocumentCollection.h src/util/ArgumentParser.cpp src/util/ArgumentParser.h src/database/Document.cpp src/database/Document.h)
Tomáš Kořistka's avatar
Tomáš Kořistka committed

# User interface files
set(FORMS
        src/ui/forms/mainform.ui
        )

# Resource files
set(RESOURCES
        resources.qrc
        )

# Shared libraries
set(LIBRARIES
        Qt5::Widgets
        Qt5::Network
        SQLiteCpp
Tomáš Kořistka's avatar
Tomáš Kořistka committed
        )

# Generate additional sources with MOC and UIC
qt5_wrap_ui(UIC_SOURCES ${FORMS})
qt5_add_resources(RCC_SOURCES ${RESOURCES})

# Set target
add_executable(${TARGET_NAME} ${SOURCES} ${HEADERS} ${UIC_SOURCES} ${RCC_SOURCES})

# Link with libraries
target_link_libraries(${TARGET_NAME} ${LIBRARIES})
Tomáš Kořistka's avatar
Tomáš Kořistka committed
# Installation
install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin)
install(FILES resources/${TARGET_NAME}.png DESTINATION share/icons/hicolor/48x48/apps)
install(FILES ${TARGET_NAME}.desktop DESTINATION share/applications)