forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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})
|
||||
|
||||
if ("Qt5::Widgets" IN_LIST dependencies)
|
||||
set(PCH_FILE "${PROJECT_SOURCE_DIR}/src/shared/qtcreator_gui_pch.h")
|
||||
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()
|
||||
|
||||
if (EXISTS ${PCH_FILE})
|
||||
set_target_properties(${target} PROPERTIES PRECOMPILE_HEADERS ${PCH_FILE})
|
||||
set(PCH_TARGET QtCreatorPchConsole)
|
||||
if ("Qt5::Widgets" IN_LIST dependencies)
|
||||
set(PCH_TARGET QtCreatorPchGui)
|
||||
endif()
|
||||
|
||||
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()
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
)
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user