From 343f30cdf8ca8f741fc77bab24cba8e449648814 Mon Sep 17 00:00:00 2001 From: BlackMark Date: Fri, 26 Jun 2020 13:26:54 +0200 Subject: [PATCH] Add cmake support --- .gitignore | 1 + CMakeLists.txt | 80 +++++++++++++++++++++++++++++++++++++++ cmake/compile_flags.cmake | 13 +++++++ 3 files changed, 94 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/compile_flags.cmake diff --git a/.gitignore b/.gitignore index 94fd3a0..385fc6e 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ x64 *.o .qmake.stash Makefile* +build* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..774507d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.13) + +project(AdaptiveBrightness CXX) + +set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + +include(compile_flags) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "CMake Build Type" FORCE) +endif() + +set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "CMake Configuration Types" FORCE) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +find_package(Threads REQUIRED) +find_package(Qt5 COMPONENTS + Core + Gui + Widgets + SerialPort + REQUIRED +) + +file(GLOB_RECURSE adaptive_brightness_srcs + AdaptiveBrightness/*.cpp + AdaptiveBrightness/*.hpp + + AdaptiveBrightness/*.ui + AdaptiveBrightness/*.qrc +) + +if(MSVC) + file(GLOB_RECURSE icon_resource + AdaptiveBrightness/*.rc + ) + list(APPEND adaptive_brightness_srcs ${icon_resource}) + + add_executable(AdaptiveBrightness WIN32 ${adaptive_brightness_srcs}) +else() + add_executable(AdaptiveBrightness ${adaptive_brightness_srcs}) +endif() + +target_include_directories(AdaptiveBrightness PUBLIC ./AdaptiveBrightness) +target_link_libraries(AdaptiveBrightness + Threads::Threads + Qt5::Core + Qt5::Gui + Qt5::Widgets + Qt5::SerialPort +) + +if(MSVC) + get_target_property(QT5_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION) + get_filename_component(QT5_WINDEPLOYQT_EXECUTABLE ${QT5_QMAKE_EXECUTABLE} PATH) + set(QT5_WINDEPLOYQT_EXECUTABLE "${QT5_WINDEPLOYQT_EXECUTABLE}/windeployqt.exe") + + add_custom_command(TARGET AdaptiveBrightness POST_BUILD + COMMAND ${QT5_WINDEPLOYQT_EXECUTABLE} + --no-system-d3d-compiler + --no-compiler-runtime + --no-opengl-sw + --qmldir "${CMAKE_SOURCE_DIR}/AdaptiveBrightness" + $ + ) +endif() + +adaptive_brightness_add_compile_flags(AdaptiveBrightness) +adaptive_brightness_enable_warnings(AdaptiveBrightness) + +set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT AdaptiveBrightness) diff --git a/cmake/compile_flags.cmake b/cmake/compile_flags.cmake new file mode 100644 index 0000000..fbd1416 --- /dev/null +++ b/cmake/compile_flags.cmake @@ -0,0 +1,13 @@ +function(adaptive_brightness_add_compile_flags target) + if(MSVC) + target_compile_options(${target} PUBLIC /MP) + endif() +endfunction() + +function(adaptive_brightness_enable_warnings target) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang") + target_compile_options(${target} PRIVATE -Wall -Wextra -pedantic) + elseif(MSVC) + target_compile_options(${target} PRIVATE /W3) + endif() +endfunction()