From 29b9baa3ab7b1fb316e3d6e490117f6afba68cdd Mon Sep 17 00:00:00 2001 From: "a.yankovich" Date: Thu, 29 Aug 2019 16:28:09 +0300 Subject: [PATCH 1/5] first version cmake build system --- CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++ cmake/QuasarApp.cmake | 25 +++++++++++++++++++++++++ cmake/QuasarAppOut.cmake | 22 ++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/QuasarApp.cmake create mode 100644 cmake/QuasarAppOut.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..42971a3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,32 @@ +# +# Copyright (C) 2018-2019 QuasarApp. +# Distributed under the lgplv3 software license, see the accompanying +# Everyone is permitted to copy and distribute verbatim copies +# of this license document, but changing it is not allowed. +# + +cmake_minimum_required(VERSION 3.1) + +include(cmake/QuasarAppOut.cmake) + +project(${QUASARAPP_LIB_NAME} LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${QUASARAPP_LIB_OUTPUT_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${QUASARAPP_LIB_OUTPUT_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QUASARAPP_LIB_OUTPUT_DIR}/bin) + +find_package(Qt5 COMPONENTS Core REQUIRED) + +file(GLOB SOURCE_CPP + "*.cpp" +) + +add_library(${PROJECT_NAME} SHARED ${SOURCE_CPP}) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core) + diff --git a/cmake/QuasarApp.cmake b/cmake/QuasarApp.cmake new file mode 100644 index 0000000..2b4a134 --- /dev/null +++ b/cmake/QuasarApp.cmake @@ -0,0 +1,25 @@ +# +# Copyright (C) 2018-2019 QuasarApp. +# Distributed under the lgplv3 software license, see the accompanying +# Everyone is permitted to copy and distribute verbatim copies +# of this license document, but changing it is not allowed. +# + +cmake_minimum_required(VERSION 3.1) + +IF(NOT QUASARAPP_LIB) + SET(QUASARAPP_LIB True) + include(QuasarAppOut.cmake) + + message(STATUS "buid type " ${CMAKE_BUILD_TYPE}) + message(STATUS "Project " ${PROJECT_NAME}) + message(STATUS "c compiler " ${CMAKE_C_COMPILER}) + message(STATUS "cxx compiler " ${CMAKE_CXX_COMPILER}) + message(STATUS "build shared " ${BUILD_SHARED_LIBS}) + + + target_link_libraries(${PROJECT_NAME} ${QUASARAPP_LIB_NAME}) + target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/../) + +ENDIF(NOT QUASARAPP_LIB) + diff --git a/cmake/QuasarAppOut.cmake b/cmake/QuasarAppOut.cmake new file mode 100644 index 0000000..bbca7b7 --- /dev/null +++ b/cmake/QuasarAppOut.cmake @@ -0,0 +1,22 @@ +# +# Copyright (C) 2018-2019 QuasarApp. +# Distributed under the lgplv3 software license, see the accompanying +# Everyone is permitted to copy and distribute verbatim copies +# of this license document, but changing it is not allowed. +# + +IF(NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE Release) +ENDIF(NOT CMAKE_BUILD_TYPE) + +SET(QUASARAPP_LIB_NAME QuasarApp) + +IF(CMAKE_BUILD_TYPE EQUAL Release) + SET(QUASARAPP_LIB_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build/release) +ELSE() + SET(QUASARAPP_LIB_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build/debug) +ENDIF(CMAKE_BUILD_TYPE EQUAL Release) + +message(QUASARAPP_LIB_OUTPUT_DIR = ${QUASARAPP_LIB_OUTPUT_DIR}) + + From 41a1250a540a2ca540b1900ae826850ad896ea5b Mon Sep 17 00:00:00 2001 From: "a.yankovich" Date: Thu, 29 Aug 2019 16:31:27 +0300 Subject: [PATCH 2/5] fix cmake --- CMakeLists.txt | 7 +++++++ cmake/QuasarApp.cmake | 11 ++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 42971a3..695c055 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,3 +30,10 @@ file(GLOB SOURCE_CPP add_library(${PROJECT_NAME} SHARED ${SOURCE_CPP}) target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core) + +message(STATUS "buid type " ${CMAKE_BUILD_TYPE}) +message(STATUS "Project " ${PROJECT_NAME}) +message(STATUS "c compiler " ${CMAKE_C_COMPILER}) +message(STATUS "cxx compiler " ${CMAKE_CXX_COMPILER}) +message(STATUS "build shared " ${BUILD_SHARED_LIBS}) +message(STATUS "qmake exec " ${QT_QMAKE_EXECUTABLE}) diff --git a/cmake/QuasarApp.cmake b/cmake/QuasarApp.cmake index 2b4a134..8bd9a1c 100644 --- a/cmake/QuasarApp.cmake +++ b/cmake/QuasarApp.cmake @@ -9,17 +9,10 @@ cmake_minimum_required(VERSION 3.1) IF(NOT QUASARAPP_LIB) SET(QUASARAPP_LIB True) - include(QuasarAppOut.cmake) - - message(STATUS "buid type " ${CMAKE_BUILD_TYPE}) - message(STATUS "Project " ${PROJECT_NAME}) - message(STATUS "c compiler " ${CMAKE_C_COMPILER}) - message(STATUS "cxx compiler " ${CMAKE_CXX_COMPILER}) - message(STATUS "build shared " ${BUILD_SHARED_LIBS}) - + include(QuasarAppOut.cmake) target_link_libraries(${PROJECT_NAME} ${QUASARAPP_LIB_NAME}) - target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/../) + target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}) ENDIF(NOT QUASARAPP_LIB) From 0895999e36bc2ffdb1db78165793c8f9c57ff166 Mon Sep 17 00:00:00 2001 From: "a.yankovich" Date: Thu, 29 Aug 2019 18:04:56 +0300 Subject: [PATCH 3/5] added ccache for cmake (not work) --- .gitignore | 15 +++++++++++++++ cmake/QuasarApp.cmake | 2 +- cmake/QuasarAppOut.cmake | 2 +- cmake/ccache.cmake | 28 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 cmake/ccache.cmake diff --git a/.gitignore b/.gitignore index 903365d..8cb622d 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,18 @@ CMakeLists.txt.user* build/* *.user* + +#cmake + +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps +*_autogen diff --git a/cmake/QuasarApp.cmake b/cmake/QuasarApp.cmake index 8bd9a1c..8b2d142 100644 --- a/cmake/QuasarApp.cmake +++ b/cmake/QuasarApp.cmake @@ -9,7 +9,7 @@ cmake_minimum_required(VERSION 3.1) IF(NOT QUASARAPP_LIB) SET(QUASARAPP_LIB True) - include(QuasarAppOut.cmake) + include(QuasarAppOut.cmake) target_link_libraries(${PROJECT_NAME} ${QUASARAPP_LIB_NAME}) target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/cmake/QuasarAppOut.cmake b/cmake/QuasarAppOut.cmake index bbca7b7..709ee64 100644 --- a/cmake/QuasarAppOut.cmake +++ b/cmake/QuasarAppOut.cmake @@ -19,4 +19,4 @@ ENDIF(CMAKE_BUILD_TYPE EQUAL Release) message(QUASARAPP_LIB_OUTPUT_DIR = ${QUASARAPP_LIB_OUTPUT_DIR}) - +include(cmake/ccache.cmake) diff --git a/cmake/ccache.cmake b/cmake/ccache.cmake new file mode 100644 index 0000000..a5954f2 --- /dev/null +++ b/cmake/ccache.cmake @@ -0,0 +1,28 @@ +# +# Copyright (C) 2018-2019 QuasarApp. +# Distributed under the lgplv3 software license, see the accompanying +# Everyone is permitted to copy and distribute verbatim copies +# of this license document, but changing it is not allowed. +# + +IF(NOT CCACHE_INCLUDE) + SET(CCACHE_INCLUDE True) + IF(CMAKE_HOST_SYSTEM_NAME EQUAL Linux) + + execute_process(COMMAND "which" "ccache" + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE which_result + OUTPUT_VARIABLE BIN) + + IF (${BIN} STREQUAL "") + message("ccache disabled for ${PROJECT_NAME}") + ELSE() + SET(CMAKE_CXX_COMPILER "${BIN} ${CMAKE_CXX_COMPILER}") + message("ccache enabled for ${CMAKE_CXX_COMPILER}") + + ENDIF (${BIN} STREQUAL "") + + ENDIF(CMAKE_HOST_SYSTEM_NAME EQUAL Linux) + +ENDIF(NOT CCACHE_INCLUDE) + From 2205d1e8cbc0de70a6b7200cb36ca8d5e30aeedf Mon Sep 17 00:00:00 2001 From: EndrII Date: Thu, 29 Aug 2019 22:48:06 +0300 Subject: [PATCH 4/5] cmake --- CMakeLists.txt | 1 + cmake/QuasarApp.cmake | 18 ------------------ cmake/QuasarAppOut.cmake | 10 +++++----- cmake/ccache.cmake | 25 +++++-------------------- 4 files changed, 11 insertions(+), 43 deletions(-) delete mode 100644 cmake/QuasarApp.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 695c055..755fdeb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ cmake_minimum_required(VERSION 3.1) include(cmake/QuasarAppOut.cmake) +include(cmake/ccache.cmake) project(${QUASARAPP_LIB_NAME} LANGUAGES CXX) diff --git a/cmake/QuasarApp.cmake b/cmake/QuasarApp.cmake deleted file mode 100644 index 8b2d142..0000000 --- a/cmake/QuasarApp.cmake +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2018-2019 QuasarApp. -# Distributed under the lgplv3 software license, see the accompanying -# Everyone is permitted to copy and distribute verbatim copies -# of this license document, but changing it is not allowed. -# - -cmake_minimum_required(VERSION 3.1) - -IF(NOT QUASARAPP_LIB) - SET(QUASARAPP_LIB True) - include(QuasarAppOut.cmake) - - target_link_libraries(${PROJECT_NAME} ${QUASARAPP_LIB_NAME}) - target_include_directories(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}) - -ENDIF(NOT QUASARAPP_LIB) - diff --git a/cmake/QuasarAppOut.cmake b/cmake/QuasarAppOut.cmake index 709ee64..a4901f6 100644 --- a/cmake/QuasarAppOut.cmake +++ b/cmake/QuasarAppOut.cmake @@ -11,12 +11,12 @@ ENDIF(NOT CMAKE_BUILD_TYPE) SET(QUASARAPP_LIB_NAME QuasarApp) -IF(CMAKE_BUILD_TYPE EQUAL Release) +IF(${CMAKE_BUILD_TYPE} STREQUAL "Release") SET(QUASARAPP_LIB_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build/release) -ELSE() +ELSE(${CMAKE_BUILD_TYPE} STREQUAL "Release") SET(QUASARAPP_LIB_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build/debug) -ENDIF(CMAKE_BUILD_TYPE EQUAL Release) +ENDIF(${CMAKE_BUILD_TYPE} STREQUAL "Release") -message(QUASARAPP_LIB_OUTPUT_DIR = ${QUASARAPP_LIB_OUTPUT_DIR}) -include(cmake/ccache.cmake) + +message("QUASARAPP_LIB_OUTPUT_DIR = ${QUASARAPP_LIB_OUTPUT_DIR}") diff --git a/cmake/ccache.cmake b/cmake/ccache.cmake index a5954f2..da407f7 100644 --- a/cmake/ccache.cmake +++ b/cmake/ccache.cmake @@ -5,24 +5,9 @@ # of this license document, but changing it is not allowed. # -IF(NOT CCACHE_INCLUDE) - SET(CCACHE_INCLUDE True) - IF(CMAKE_HOST_SYSTEM_NAME EQUAL Linux) - - execute_process(COMMAND "which" "ccache" - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - RESULT_VARIABLE which_result - OUTPUT_VARIABLE BIN) - - IF (${BIN} STREQUAL "") - message("ccache disabled for ${PROJECT_NAME}") - ELSE() - SET(CMAKE_CXX_COMPILER "${BIN} ${CMAKE_CXX_COMPILER}") - message("ccache enabled for ${CMAKE_CXX_COMPILER}") - - ENDIF (${BIN} STREQUAL "") - - ENDIF(CMAKE_HOST_SYSTEM_NAME EQUAL Linux) - -ENDIF(NOT CCACHE_INCLUDE) +find_program(CCACHE_PROGRAM ccache) +if(CCACHE_PROGRAM) + message("using ccache in ${CCACHE_PROGRAM}") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") +endif() From 53bd629ccd7d77a6a1c6dea566e921b23a4c3ac7 Mon Sep 17 00:00:00 2001 From: EndrII Date: Sat, 31 Aug 2019 18:59:16 +0300 Subject: [PATCH 5/5] added support cmake build system --- .gitmodules | 3 +++ CMake | 1 + CMakeLists.txt | 21 +++++++-------------- cmake/QuasarAppOut.cmake | 22 ---------------------- cmake/ccache.cmake | 13 ------------- 5 files changed, 11 insertions(+), 49 deletions(-) create mode 100644 .gitmodules create mode 160000 CMake delete mode 100644 cmake/QuasarAppOut.cmake delete mode 100644 cmake/ccache.cmake diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d892894 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "CMake"] + path = CMake + url = https://github.com/QuasarApp/CMake.git diff --git a/CMake b/CMake new file mode 160000 index 0000000..b19c291 --- /dev/null +++ b/CMake @@ -0,0 +1 @@ +Subproject commit b19c29180d406b88ab57f05f026c32ade0bfc5a3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 755fdeb..eb51aef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,10 +7,12 @@ cmake_minimum_required(VERSION 3.1) -include(cmake/QuasarAppOut.cmake) -include(cmake/ccache.cmake) +project(QuasarApp LANGUAGES CXX) + +include(CMake/ProjectOut.cmake) +include(CMake/ccache.cmake) +include(CMake/Version.cmake) -project(${QUASARAPP_LIB_NAME} LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) @@ -18,10 +20,6 @@ set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${QUASARAPP_LIB_OUTPUT_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${QUASARAPP_LIB_OUTPUT_DIR}/lib) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${QUASARAPP_LIB_OUTPUT_DIR}/bin) - find_package(Qt5 COMPONENTS Core REQUIRED) file(GLOB SOURCE_CPP @@ -30,11 +28,6 @@ file(GLOB SOURCE_CPP add_library(${PROJECT_NAME} SHARED ${SOURCE_CPP}) target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - -message(STATUS "buid type " ${CMAKE_BUILD_TYPE}) -message(STATUS "Project " ${PROJECT_NAME}) -message(STATUS "c compiler " ${CMAKE_C_COMPILER}) -message(STATUS "cxx compiler " ${CMAKE_CXX_COMPILER}) -message(STATUS "build shared " ${BUILD_SHARED_LIBS}) -message(STATUS "qmake exec " ${QT_QMAKE_EXECUTABLE}) +setVersion(1 2 0) diff --git a/cmake/QuasarAppOut.cmake b/cmake/QuasarAppOut.cmake deleted file mode 100644 index a4901f6..0000000 --- a/cmake/QuasarAppOut.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright (C) 2018-2019 QuasarApp. -# Distributed under the lgplv3 software license, see the accompanying -# Everyone is permitted to copy and distribute verbatim copies -# of this license document, but changing it is not allowed. -# - -IF(NOT CMAKE_BUILD_TYPE) - SET(CMAKE_BUILD_TYPE Release) -ENDIF(NOT CMAKE_BUILD_TYPE) - -SET(QUASARAPP_LIB_NAME QuasarApp) - -IF(${CMAKE_BUILD_TYPE} STREQUAL "Release") - SET(QUASARAPP_LIB_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build/release) -ELSE(${CMAKE_BUILD_TYPE} STREQUAL "Release") - SET(QUASARAPP_LIB_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build/debug) -ENDIF(${CMAKE_BUILD_TYPE} STREQUAL "Release") - - - -message("QUASARAPP_LIB_OUTPUT_DIR = ${QUASARAPP_LIB_OUTPUT_DIR}") diff --git a/cmake/ccache.cmake b/cmake/ccache.cmake deleted file mode 100644 index da407f7..0000000 --- a/cmake/ccache.cmake +++ /dev/null @@ -1,13 +0,0 @@ -# -# Copyright (C) 2018-2019 QuasarApp. -# Distributed under the lgplv3 software license, see the accompanying -# Everyone is permitted to copy and distribute verbatim copies -# of this license document, but changing it is not allowed. -# - -find_program(CCACHE_PROGRAM ccache) -if(CCACHE_PROGRAM) - message("using ccache in ${CCACHE_PROGRAM}") - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") -endif() -