aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorIvan Komissarov <ABBAPOH@gmail.com>2020-08-13 00:45:36 +0200
committerIvan Komissarov <ABBAPOH@gmail.com>2020-08-17 17:09:39 +0000
commitb67b08f1c2c26a226db6f43f2452026f85ad6460 (patch)
treee8aa41c51e6247919d531d9cd35737c98a360ff9 /CMakeLists.txt
parent2311a8224c3fc7141c44cc517f4ecdb882cd09f8 (diff)
Initial CMake port
This change allows to build Qbs using CMake build tool Tested platforms - Linux (gcc) - macOS (clang) - Windows (msvc2017) Missing features (compared to Qbs build) - Documentation build - Bundled QtScript support - Static build - .pc file for qbscore - qbs module for qbscore Change-Id: I09b5dadd6723d5a47e5ef2a9a38d3300488718f2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt51
1 files changed, 51 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 000000000..2d3376b15
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,51 @@
+cmake_minimum_required(VERSION 3.10)
+
+## Add paths to check for cmake modules:
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+include(FeatureSummary)
+include(QbsAPI)
+
+file(STRINGS VERSION QBS_VERSION)
+project(Qbs VERSION ${QBS_VERSION})
+
+# Force C++ standard, do not fall back, do not use compiler extensions
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+# Set up Qt stuff:
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_AUTOUIC ON)
+
+option(WITH_TESTS "Build Tests" ON)
+option(WITH_UNIT_TESTS "Build Unit Tests" OFF)
+option(WITH_PROJECT_FILE_UPDATES "Enable project file updates support" OFF)
+option(INSTALL_PUBLIC_HEADERS "Whether to install public headers" ON)
+
+find_program(CCACHE_FOUND ccache)
+if(CCACHE_FOUND)
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) # Less useful to do it for linking, see edit2
+endif(CCACHE_FOUND)
+
+if(WITH_TESTS)
+ enable_testing()
+ set(QT_TEST_COMPONENT Test)
+ set(IMPLICIT_DEPENDS Qt5::Test)
+endif()
+
+find_package(Qt5
+ COMPONENTS Concurrent Core Gui Network Script Widgets Xml ${QT_TEST_COMPONENT}
+ REQUIRED
+ )
+
+add_subdirectory(src)
+add_subdirectory(share)
+if(WITH_TESTS)
+ add_subdirectory(tests)
+endif()