summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2019-09-10 18:31:53 +0200
committerCristian Adam <cristian.adam@qt.io>2019-09-19 11:38:34 +0000
commit4a20a596c8dd79ea3e9ac3b0d1b215547f997859 (patch)
tree38daf715421c6ae6cfc5a53509770d5cc8fc6aad
parentccab8354551ab1e0b4c79bba66469e32945a750b (diff)
downloadqt-creator-4a20a596c8dd79ea3e9ac3b0d1b215547f997859.tar.gz
CMake Build: Use shared precompile headers
This will make the build directory size smaller, as only two pch files will be generated. Not one for every target. Change-Id: I3eec91e7536eab1c62bff8843f075f0ef7b5fff6 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
-rw-r--r--cmake/QtCreatorAPI.cmake44
-rw-r--r--src/libs/3rdparty/syntax-highlighting/CMakeLists.txt2
-rw-r--r--src/libs/extensionsystem/CMakeLists.txt4
-rw-r--r--src/libs/tracing/CMakeLists.txt1
-rw-r--r--tests/auto/toolchaincache/CMakeLists.txt2
-rw-r--r--tests/unit/unittest/CMakeLists.txt2
6 files changed, 39 insertions, 16 deletions
diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake
index 5e3ea2534c..4e7aca2d5e 100644
--- a/cmake/QtCreatorAPI.cmake
+++ b/cmake/QtCreatorAPI.cmake
@@ -13,6 +13,10 @@ list(APPEND DEFAULT_DEFINES
QT_USE_FAST_CONCATENATION
)
+if (WIN32)
+ list(APPEND DEFAULT_DEFINES UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS)
+endif()
+
#
# Setup path handling
#
@@ -284,11 +288,8 @@ endfunction()
function(enable_pch target)
if (BUILD_WITH_PCH)
- get_target_property(target_sources ${target} SOURCES)
- list(LENGTH target_sources target_sources_number)
- if (${target_sources_number} GREATER "3")
- set(PCH_FILE "${PROJECT_SOURCE_DIR}/src/shared/qtcreator_pch.h")
-
+ get_target_property(target_type ${target} TYPE)
+ if (NOT ${target_type} STREQUAL "OBJECT_LIBRARY")
function(_recursively_collect_dependencies input_target)
get_target_property(input_type ${input_target} TYPE)
if (${input_type} STREQUAL "INTERFACE_LIBRARY")
@@ -305,15 +306,38 @@ function(enable_pch target)
endfunction()
_recursively_collect_dependencies(${target})
+ function(_add_pch_target pch_target pch_file pch_dependency)
+ if (EXISTS ${pch_file})
+ add_library(${pch_target} STATIC
+ ${CMAKE_BINARY_DIR}/empy_pch.cpp)
+ target_compile_definitions(${pch_target} PRIVATE ${DEFAULT_DEFINES})
+ set_target_properties(${pch_target} PROPERTIES
+ PRECOMPILE_HEADERS ${pch_file})
+ target_link_libraries(${pch_target} PRIVATE ${pch_dependency})
+ endif()
+ endfunction()
+
+ if (NOT TARGET QtCreatorPchGui AND NOT TARGET QtCreatorPchConsole)
+ file(WRITE ${CMAKE_BINARY_DIR}/empy_pch.cpp.in "/*empty file*/")
+ configure_file(
+ ${CMAKE_BINARY_DIR}/empy_pch.cpp.in
+ ${CMAKE_BINARY_DIR}/empy_pch.cpp)
+
+ _add_pch_target(QtCreatorPchGui
+ "${PROJECT_SOURCE_DIR}/src/shared/qtcreator_gui_pch.h" Qt5::Widgets)
+ _add_pch_target(QtCreatorPchConsole
+ "${PROJECT_SOURCE_DIR}/src/shared/qtcreator_pch.h" Qt5::Core)
+ endif()
+
+ set(PCH_TARGET QtCreatorPchConsole)
if ("Qt5::Widgets" IN_LIST dependencies)
- set(PCH_FILE "${PROJECT_SOURCE_DIR}/src/shared/qtcreator_gui_pch.h")
+ set(PCH_TARGET QtCreatorPchGui)
endif()
- if (EXISTS ${PCH_FILE})
- set_target_properties(${target} PROPERTIES PRECOMPILE_HEADERS ${PCH_FILE})
+ if (TARGET ${PCH_TARGET})
+ set_target_properties(${target} PROPERTIES
+ PRECOMPILE_HEADERS_REUSE_FROM ${PCH_TARGET})
endif()
- elseif(WITH_DEBUG_CMAKE)
- message(STATUS "Skipped PCH for ${target}")
endif()
endif()
endfunction()
diff --git a/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt
index 27cc408223..d8d64bcdd7 100644
--- a/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt
+++ b/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt
@@ -1,7 +1,7 @@
add_qtc_library(KSyntaxHighlighting STATIC
PUBLIC_INCLUDES autogenerated/ autogenerated/src/lib src/lib
PUBLIC_DEFINES KSYNTAXHIGHLIGHTING_LIBRARY
- DEPENDS Qt5::Network Qt5::Gui
+ DEPENDS Qt5::Network Qt5::Widgets
SOURCES
autogenerated/src/lib/ksyntaxhighlighting_logging.cpp autogenerated/src/lib/ksyntaxhighlighting_logging.h
autogenerated/ksyntaxhighlighting_version.h
diff --git a/src/libs/extensionsystem/CMakeLists.txt b/src/libs/extensionsystem/CMakeLists.txt
index 864c57c1ae..53f928153c 100644
--- a/src/libs/extensionsystem/CMakeLists.txt
+++ b/src/libs/extensionsystem/CMakeLists.txt
@@ -1,6 +1,6 @@
add_qtc_library(ExtensionSystem
- DEPENDS Aggregation Utils Qt5::Core Qt5::Widgets
- PUBLIC_DEPENDS Qt5::Core
+ DEPENDS Aggregation Utils
+ PUBLIC_DEPENDS Qt5::Core Qt5::Widgets
SOURCES
extensionsystem_global.h
invoker.cpp invoker.h
diff --git a/src/libs/tracing/CMakeLists.txt b/src/libs/tracing/CMakeLists.txt
index 41a42bbac5..9cc68ec149 100644
--- a/src/libs/tracing/CMakeLists.txt
+++ b/src/libs/tracing/CMakeLists.txt
@@ -6,6 +6,7 @@ endif()
add_qtc_library(Tracing
DEPENDS Utils Qt5::Qml Qt5::Quick
+ PUBLIC_DEPENDS Qt5::Widgets
SOURCES ${TEST_SOURCES}
flamegraph.cpp flamegraph.h
flamegraphattached.h
diff --git a/tests/auto/toolchaincache/CMakeLists.txt b/tests/auto/toolchaincache/CMakeLists.txt
index 3a0637c9fd..01edb5d5d4 100644
--- a/tests/auto/toolchaincache/CMakeLists.txt
+++ b/tests/auto/toolchaincache/CMakeLists.txt
@@ -1,5 +1,5 @@
add_qtc_test(tst_toolchaincache
- DEPENDS ProjectExplorer Qt5::Gui
+ DEPENDS ProjectExplorer Qt5::Widgets
INCLUDES "${PROJECT_SOURCE_DIR}/src/libs"
SOURCES tst_toolchaincache.cpp
)
diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt
index 7b6a11e020..99f221aa0e 100644
--- a/tests/unit/unittest/CMakeLists.txt
+++ b/tests/unit/unittest/CMakeLists.txt
@@ -18,8 +18,6 @@ add_qtc_test(unittest GTEST
clangrefactoringbackend_lib clangbackend_lib clangpchmanagerbackend_lib
CPlusPlus Sqlite Utils
DEFINES
- QT_NO_CAST_TO_ASCII QT_RESTRICTED_CAST_FROM_ASCII
- QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION
UNIT_TESTS
DONT_CHECK_MESSAGE_COUNTER
QTC_RESOURCE_DIR="${PROJECT_SOURCE_DIR}/share/qtcreator"