diff options
author | Cristian Adam <cristian.adam@qt.io> | 2019-09-10 18:31:53 +0200 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2019-09-19 11:38:34 +0000 |
commit | 4a20a596c8dd79ea3e9ac3b0d1b215547f997859 (patch) | |
tree | 38daf715421c6ae6cfc5a53509770d5cc8fc6aad | |
parent | ccab8354551ab1e0b4c79bba66469e32945a750b (diff) | |
download | qt-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.cmake | 44 | ||||
-rw-r--r-- | src/libs/3rdparty/syntax-highlighting/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/libs/extensionsystem/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/libs/tracing/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/auto/toolchaincache/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tests/unit/unittest/CMakeLists.txt | 2 |
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" |