010bd0f374
Import legacy SearchMyFiles settings once so the FolderScope identity change does not discard user profiles and preferences.
114 lines
4.4 KiB
CMake
114 lines
4.4 KiB
CMake
cmake_minimum_required(VERSION 3.21)
|
|
|
|
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FOLDERSCOPE_VERSION)
|
|
string(STRIP "${FOLDERSCOPE_VERSION}" FOLDERSCOPE_VERSION)
|
|
if (NOT FOLDERSCOPE_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+$")
|
|
message(FATAL_ERROR "VERSION must use MAJOR.MINOR.PATCH: ${FOLDERSCOPE_VERSION}")
|
|
endif()
|
|
|
|
project(folderscope VERSION ${FOLDERSCOPE_VERSION} LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent DBus)
|
|
|
|
add_library(folderscope_core STATIC
|
|
src/search_core.cpp
|
|
src/search_core.h
|
|
)
|
|
target_link_libraries(folderscope_core PUBLIC Qt6::Core)
|
|
target_compile_options(folderscope_core PRIVATE -Wall -Wextra -Wpedantic)
|
|
target_include_directories(folderscope_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
|
|
qt_add_executable(folderscope
|
|
src/long_long_spin_box.cpp
|
|
src/long_long_spin_box.h
|
|
src/main.cpp
|
|
src/main_window.h
|
|
src/main_window.cpp
|
|
src/search_cache.h
|
|
src/search_cache.cpp
|
|
src/search_engine.h
|
|
src/search_engine.cpp
|
|
src/results_model.h
|
|
src/results_model.cpp
|
|
src/options_dialog.h
|
|
src/options_dialog.cpp
|
|
)
|
|
|
|
target_link_libraries(folderscope PRIVATE folderscope_core Qt6::Widgets Qt6::Concurrent Qt6::DBus)
|
|
target_compile_options(folderscope PRIVATE -Wall -Wextra -Wpedantic)
|
|
target_compile_definitions(folderscope PRIVATE FOLDERSCOPE_VERSION="${PROJECT_VERSION}")
|
|
|
|
install(TARGETS folderscope RUNTIME DESTINATION bin)
|
|
install(FILES packaging/folderscope.desktop
|
|
DESTINATION share/applications)
|
|
install(FILES packaging/folderscope.svg
|
|
DESTINATION share/icons/hicolor/scalable/apps)
|
|
|
|
include(CTest)
|
|
if (BUILD_TESTING)
|
|
find_package(Qt6 REQUIRED COMPONENTS Test)
|
|
|
|
qt_add_executable(search_core_tests
|
|
tests/search_core_test.cpp
|
|
)
|
|
target_link_libraries(search_core_tests PRIVATE folderscope_core Qt6::Test)
|
|
target_compile_options(search_core_tests PRIVATE -Wall -Wextra -Wpedantic)
|
|
add_test(NAME search-core COMMAND search_core_tests)
|
|
|
|
qt_add_executable(search_cache_tests
|
|
src/search_cache.cpp
|
|
src/search_cache.h
|
|
tests/search_cache_test.cpp
|
|
)
|
|
target_link_libraries(search_cache_tests PRIVATE folderscope_core Qt6::Test)
|
|
target_compile_options(search_cache_tests PRIVATE -Wall -Wextra -Wpedantic)
|
|
target_include_directories(search_cache_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
add_test(NAME search-cache COMMAND search_cache_tests)
|
|
|
|
qt_add_executable(search_engine_tests
|
|
src/search_cache.cpp
|
|
src/search_cache.h
|
|
src/search_engine.cpp
|
|
src/search_engine.h
|
|
tests/search_engine_test.cpp
|
|
)
|
|
target_link_libraries(search_engine_tests PRIVATE
|
|
folderscope_core Qt6::Concurrent Qt6::Test)
|
|
target_compile_options(search_engine_tests PRIVATE -Wall -Wextra -Wpedantic)
|
|
target_include_directories(search_engine_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
add_test(NAME search-engine COMMAND search_engine_tests)
|
|
|
|
qt_add_executable(options_dialog_tests
|
|
src/long_long_spin_box.cpp
|
|
src/long_long_spin_box.h
|
|
src/options_dialog.cpp
|
|
src/options_dialog.h
|
|
tests/options_dialog_test.cpp
|
|
)
|
|
target_link_libraries(options_dialog_tests PRIVATE
|
|
folderscope_core Qt6::Widgets Qt6::Test)
|
|
target_compile_options(options_dialog_tests PRIVATE -Wall -Wextra -Wpedantic)
|
|
target_include_directories(options_dialog_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
add_test(NAME options-dialog COMMAND options_dialog_tests)
|
|
set_tests_properties(options-dialog PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")
|
|
|
|
qt_add_executable(long_long_spin_box_tests
|
|
src/long_long_spin_box.cpp
|
|
src/long_long_spin_box.h
|
|
tests/long_long_spin_box_test.cpp
|
|
)
|
|
target_link_libraries(long_long_spin_box_tests PRIVATE Qt6::Widgets Qt6::Test)
|
|
target_compile_options(long_long_spin_box_tests PRIVATE -Wall -Wextra -Wpedantic)
|
|
target_include_directories(long_long_spin_box_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
add_test(NAME long-long-spin-box COMMAND long_long_spin_box_tests)
|
|
set_tests_properties(long-long-spin-box PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")
|
|
|
|
add_test(NAME release-rejects-untracked
|
|
COMMAND bash "${CMAKE_CURRENT_SOURCE_DIR}/tests/release_dirty_test.sh"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/release.sh")
|
|
endif()
|