cmake_minimum_required(VERSION 3.5) # This directive is ignored for non OSX environments set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "Minimum OS X deployment version") project (outliner C CXX) # Your project name if (NOT LIB_PLATFORM) message("No LIB_PLATFORM is set, defaulting to works/sevana/platform/libraries") set (LIB_PLATFORM ${CMAKE_CURRENT_SOURCE_DIR}/../../../sevana/platform/libraries) endif() include (${LIB_PLATFORM}/platform_libs.cmake) # C++ 11 standard set (CMAKE_CXX_STANDARD 11) set (CMAKE_CXX_STANDARD_REQUIRED ON) # Find includes in corresponding build directories set (CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set (CMAKE_AUTOMOC ON) set (CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run uic automatically when needed. set (CMAKE_AUTOUIC ON) set (APP_SKIP_BUILD_NUMBER OFF CACHE BOOL "Skip Litt build number increase.") # This will find the Qt5 files. You will need a QT5_DIR env variable find_package (Qt5Core REQUIRED) find_package (Qt5Widgets REQUIRED) # Equivalent of QT += widgets find_package (Qt5PrintSupport REQUIRED) find_package (Qt5OpenGL REQUIRED) if (Qt5OpenGL_FOUND) message("Qt5 OpenGL found") else (Qt5OpenGL_FOUND) message("Qt5 OpenGL not found") endif(Qt5OpenGL_FOUND) # List all source files in project directory file (GLOB SOURCES "*.cpp") file (GLOB C_SOURCES "*.c") file (GLOB HEADERS "*.h") file (GLOB UI "*.ui") if (CMAKE_SYSTEM MATCHES "Windows*") add_definitions(-DTARGET_WIN) set (TARGET_WIN ON) endif() if (CMAKE_SYSTEM MATCHES "Darwin*") add_definitions(-DTARGET_OSX) set (TARGET_OSX ON) endif() if (CMAKE_SYSTEM MATCHES "Linux*") add_definitions (-DTARGET_LINUX) set (TARGET_LINUX ON) endif() # sevana pvqa if (TARGET_LINUX) set (PLATFORM_LIBS pthread m z dl) set (SCRIPT_PROCESSOR "/bin/bash") set (BUILD_NUMBER_SCRIPT build_number.sh) endif() if(TARGET_OSX) # OS X Specific flags add_definitions(-DTARGET_OSX) set (SCRIPT_PROCESSOR "/bin/bash") set (BUILD_NUMBER_SCRIPT build_number.sh) set (ADDITIONAL_EXE_OPTIONS MACOSX_BUNDLE) set (MACOS_ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/icons/appicon-osx.icns) endif() if (TARGET_WIN) # Windows Specific flags - MSVC expected add_definitions( -D_CRT_SECURE_NO_WARNINGS -DHAVE_WINSOCK2_H -D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS -DUNICODE -D_UNICODE ) set (PLATFORM_LIBS Qt5::WinMain Ws2_32 crashrpt) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") link_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../libs/crashrpt/lib/dll ) set (SCRIPT_PROCESSOR "Powershell.exe" ) set (BUILD_NUMBER_SCRIPT build_number.ps1) # Application icon set (WINDOWS_RESOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/icon_soundruler.rc) #qt5_add_resources(UI_RESOURCES ${WINDOWS_RESOURCE_PATH}) endif() # List resources qt5_add_resources(UI_RESOURCES resources/qdarkstyle/style.qrc) # Global defines add_definitions(-DQTKEYCHAIN_NO_EXPORT -DSQLITE_HAS_CODEC -DSQLITE_OMIT_LOAD_EXTENSION) # Add sqlitecpp & qtkeychain add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sqlitecpp) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/qtkeychain) if (TARGET_OSX) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/fervor) endif() # This will create you executable set (EXE_NAME Litt) set (PRODUCT_NAME Litt) add_executable(${EXE_NAME} ${ADDITIONAL_EXE_OPTIONS} ${SOURCES} ${C_SOURCES} ${HEADERS} ${UI} ${CMAKE_CURRENT_SOURCE_DIR}/qmarkdowntextedit/qmarkdowntextedit.cpp ${CMAKE_CURRENT_SOURCE_DIR}/qmarkdowntextedit/markdownhighlighter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/qmarkdowntextedit/qplaintexteditsearchwidget.cpp ${CMAKE_CURRENT_SOURCE_DIR}/platforms/hidtracker.cpp ${CMAKE_CURRENT_SOURCE_DIR}/platforms/hidtrackerimpl.cpp ${UI_RESOURCES} ${MACOS_ICON_FILE} ${RESOURCE_FILES} ${WINDOWS_RESOURCE_PATH}) target_include_directories(${EXE_NAME} SYSTEM BEFORE #PUBLIC ${UUID_INCLUDE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/sqlitecpp/include PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/sqlitecpp/sqlite3/include PUBLIC ${OPENSSL_INCLUDE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../lib/uuid/include ) if (TARGET_OSX) set_source_files_properties( ${MACOS_ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) set_target_properties( ${EXE_NAME} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${MACOS_ICON_FILE} ) set_target_properties( ${EXE_NAME} PROPERTIES OUTPUT_NAME ${PRODUCT_NAME}) set_target_properties( ${EXE_NAME} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME ${PRODUCT_NAME} ) set_target_properties( ${EXE_NAME} PROPERTIES MACOSX_BUNDLE_SHORT_VERSION_STRING "0.7.8") set_target_properties( ${EXE_NAME} PROPERTIES MACOSX_BUNDLE_LONG_VERSION_STRING "0.7.8") set_target_properties( ${EXE_NAME} PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_GUI_IDENTIFIER "biz.sevana.hasq" RESOURCE "${RESOURCE_FILES}") endif() # This will link necessary Qt5 libraries to your project target_link_libraries(${EXE_NAME} SQLiteCpp qtkeychain ${UUID_LIB} ${OPENSSL_CRYPTO} Qt5::Core Qt5::Widgets Qt5::PrintSupport Qt5::OpenGL # Qt ${PLATFORM_LIBS} # System specific libraries ) if (TARGET_WIN) set_target_properties(${EXE_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS") set_target_properties(${EXE_NAME} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS") set_target_properties(${EXE_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") set_target_properties(${EXE_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS") if (CMAKE_BUILD_TYPE MATCHES "Debug") # It happens from Qt Creator usually - so use raw output dir set (OUTPUT_DIR "${CMAKE_BINARY_DIR}") else(CMAKE_BUILD_TYPE MATCHES "Debug") # It happens from build script - add configuration name set (OUTPUT_DIR "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}") endif(CMAKE_BUILD_TYPE MATCHES "Debug") add_custom_command(TARGET ${EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/../libs/crashrpt/lib/dll/crashrpt.dll" "${PROJECT_SOURCE_DIR}/../libs/crashrpt/bin/dbghelp.dll" "${PROJECT_SOURCE_DIR}/../libs/crashrpt/bin/crashrpt_lang.ini" "${PROJECT_SOURCE_DIR}/../libs/crashrpt/bin/CrashSender1403.exe" "${OUTPUT_DIR}") endif() if (NOT APP_SKIP_BUILD_NUMBER) add_custom_command( TARGET ${EXE_NAME} POST_BUILD COMMAND ${SCRIPT_PROCESSOR} ${CMAKE_CURRENT_SOURCE_DIR}/build-number/${BUILD_NUMBER_SCRIPT} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build-number/ ) endif(NOT APP_SKIP_BUILD_NUMBER)