diff --git a/.gitignore b/.gitignore index c871890..1f72da6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .cache/ bin/ compile_commands.json +build-*/ diff --git a/.nix/flake.lock b/.nix/flake.lock index b8a078d..84a5ef8 100644 --- a/.nix/flake.lock +++ b/.nix/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1710734606, - "narHash": "sha256-rFJl+WXfksu2NkWJWKGd5Km17ZGEjFg9hOQNwstsoU8=", + "lastModified": 1710827359, + "narHash": "sha256-/KY8hffTh9SN/tTcDn/FrEiYwTXnU8NKnr4D7/stmmA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "79bb4155141a5e68f2bdee2bf6af35b1d27d3a1d", + "rev": "5710127d9693421e78cca4f74fac2db6d67162b1", "type": "github" }, "original": { diff --git a/.nix/flake.nix b/.nix/flake.nix index ee64884..ff1538c 100644 --- a/.nix/flake.nix +++ b/.nix/flake.nix @@ -18,6 +18,10 @@ ninja sccache + # dependencies + qt6.full + libGL + # pre-commit pre-commit commitizen diff --git a/CMakeLists.txt b/CMakeLists.txt index 59c1c73..fb00f51 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,3 +16,4 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) add_subdirectory(lib_vector_search) add_subdirectory(vector_search_cli) +add_subdirectory(QVectorSearch) diff --git a/QVectorSearch/.gitignore b/QVectorSearch/.gitignore new file mode 100644 index 0000000..4a0b530 --- /dev/null +++ b/QVectorSearch/.gitignore @@ -0,0 +1,74 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +.directory +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* +CMakeLists.txt.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + diff --git a/QVectorSearch/CMakeLists.txt b/QVectorSearch/CMakeLists.txt new file mode 100644 index 0000000..3193977 --- /dev/null +++ b/QVectorSearch/CMakeLists.txt @@ -0,0 +1,61 @@ +cmake_minimum_required(VERSION 3.5) + +project( + QVectorSearch + VERSION 0.1 + LANGUAGES CXX) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) + +set(PROJECT_SOURCES main.cpp mainwindow.cpp mainwindow.h mainwindow.ui) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(QVectorSearch MANUAL_FINALIZATION ${PROJECT_SOURCES}) + # Define target properties for Android with Qt 6 as: set_property(TARGET + # QVectorSearch APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR + # ${CMAKE_CURRENT_SOURCE_DIR}/android) For more information, see + # https://doc.qt.io/qt-6/qt-add-executable.html#target-creation +else() + if(ANDROID) + add_library(QVectorSearch SHARED ${PROJECT_SOURCES}) + # Define properties for Android with Qt 5 after find_package() calls as: + # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(QVectorSearch ${PROJECT_SOURCES}) + endif() +endif() + +target_link_libraries(QVectorSearch PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) + +# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. If +# you are developing for iOS or macOS you should consider setting an explicit, +# fixed bundle identifier manually though. +if(${QT_VERSION} VERSION_LESS 6.1.0) + set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.QVectorSearch) +endif() +set_target_properties( + QVectorSearch + PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION + ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING + ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE + TRUE WIN32_EXECUTABLE + TRUE) + +include(GNUInstallDirs) +install( + TARGETS QVectorSearch + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(QVectorSearch) +endif() diff --git a/QVectorSearch/main.cpp b/QVectorSearch/main.cpp new file mode 100644 index 0000000..58a0a63 --- /dev/null +++ b/QVectorSearch/main.cpp @@ -0,0 +1,10 @@ +#include "mainwindow.h" + +#include + +int main(int argc, char *argv[]) { + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/QVectorSearch/mainwindow.cpp b/QVectorSearch/mainwindow.cpp new file mode 100644 index 0000000..df8aa76 --- /dev/null +++ b/QVectorSearch/mainwindow.cpp @@ -0,0 +1,9 @@ +#include "mainwindow.h" +#include "./ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent), ui(new Ui::MainWindow) { + ui->setupUi(this); +} + +MainWindow::~MainWindow() { delete ui; } diff --git a/QVectorSearch/mainwindow.h b/QVectorSearch/mainwindow.h new file mode 100644 index 0000000..94cd27c --- /dev/null +++ b/QVectorSearch/mainwindow.h @@ -0,0 +1,22 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWindow; +} +QT_END_NAMESPACE + +class MainWindow : public QMainWindow { + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private: + Ui::MainWindow *ui; +}; +#endif // MAINWINDOW_H diff --git a/QVectorSearch/mainwindow.ui b/QVectorSearch/mainwindow.ui new file mode 100644 index 0000000..b232854 --- /dev/null +++ b/QVectorSearch/mainwindow.ui @@ -0,0 +1,22 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + + +