cmake_minimum_required(VERSION 3.16) set(CMAKE_CXX_STANDARD 23) cmake_minimum_required(VERSION 3.18) include_guard(GLOBAL) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC OFF) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(TARGET_SYSROOT /home/nikita/rpi/rpi-sysroot) set(CMAKE_SYSROOT ${TARGET_SYSROOT}) set(CMAKE_LIBRARY_PATH ${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu) set(ENV{PKG_CONFIG_PATH} $PKG_CONFIG_PATH:/usr/lib/aarch64-linux-gnu/pkgconfig) set(ENV{PKG_CONFIG_LIBDIR} /usr/lib/pkgconfig:/usr/share/pkgconfig/:${TARGET_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig:${TARGET_SYSROOT}/usr/lib/pkgconfig) set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/include") set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") # NOTE: I've added ld symlink on host to be able to run moc # sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1 # # TODO: check how to add this env var to cmake, it's needed to run moc, # otherwise you'll get the following error # # ...../rpi-sysroot/usr/lib/qt6/libexec/moc: error while loading shared libraries: # libpcre2-16.so.0: cannot open shared object file: No such file or directory # # export this path for qtcreator: # LD_LIBRARY_PATH=/home/nikita/rpi/rpi-sysroot/usr/lib/aarch64-linux-gnu/:$LD_LIBRARY_PATH set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT}) find_package(PkgConfig REQUIRED) pkg_check_modules(LIBCAMERA REQUIRED IMPORTED_TARGET libcamera) find_library(LIBCAMERA_LIBRARY libcamera.so REQUIRED) find_library(LIBCAMERA_BASE_LIBRARY libcamera-base.so REQUIRED) message(STATUS ${CAMERA_INCLUDE_DIRS}) message(STATUS ${LIBCAMERA_LIBRARY}) message(STATUS ${LIBCAMERA_BASE_LIBRARY}) pkg_check_modules(CAMERA REQUIRED libcamera) set(LIBCAMERA_LIBRARIES "${LIBCAMERA_LIBRARY}" "${LIBCAMERA_BASE_LIBRARY}") project(orpheus LANGUAGES CXX) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest") set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest") find_package(Qt6 6.4 REQUIRED COMPONENTS Gui Quick HttpServer SerialPort) find_package(TBB REQUIRED) qt_standard_project_setup(REQUIRES 6.4) include_directories(. "${CAMERA_INCLUDE_DIRS}") # libpistache pkg_check_modules(Pistache REQUIRED IMPORTED_TARGET libpistache) # add_executable(${PROJECT_NAME} qt_add_executable(apporpheus httpservice.h httpservice.cpp imagealgos.h imagealgos.cpp macro.h main.cpp LibCamera.h LibCamera.cpp genetic_algos.h genetic_algos.cpp rotaryencoder.h rotaryencoder.cpp printerclient.h printerclient.cpp fuck_intel.h ) target_link_libraries(app${PROJECT_NAME} PRIVATE "${LIBCAMERA_LIBRARIES}" PkgConfig::Pistache Qt6::Gui Qt6::HttpServer Qt6::SerialPort wiringPi TBB::tbb ) include(GNUInstallDirs) install(TARGETS app${PROJECT_NAME} BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) if ("${CMAKE_BUILD_TYPE}" MATCHES "Release") # message("it's Debug") else() #message("it's not Debug") endif() # add_compile_options(-Wall -Wextra -Wpedantic) add_compile_options(-Ofast -fno-unroll-loops -Wall)