forked from qt-creator/qt-creator
CMake build: Force optimization of CPlusPlus lib
Even in the debug build, as done for the qmake build system. This is for performance optimization of this critical part for C++ parsing even in debug / developer builds. Change-Id: I9552ba9fc44e213f2df1d2d2a64a126af3603fd1 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -106,7 +106,7 @@ function(qtc_source_dir varName)
|
||||
endfunction()
|
||||
|
||||
function(add_qtc_library name)
|
||||
cmake_parse_arguments(_arg "STATIC;OBJECT;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;UNVERSIONED;FEATURE_INFO"
|
||||
cmake_parse_arguments(_arg "STATIC;OBJECT;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;UNVERSIONED;FEATURE_INFO;SKIP_PCH"
|
||||
"DESTINATION;COMPONENT;SOURCES_PREFIX;BUILD_DEFAULT"
|
||||
"CONDITION;DEPENDS;PUBLIC_DEPENDS;DEFINES;PUBLIC_DEFINES;INCLUDES;PUBLIC_INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PROPERTIES" ${ARGN}
|
||||
)
|
||||
@@ -252,7 +252,10 @@ function(add_qtc_library name)
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${_output_binary_dir}/${IDE_LIBRARY_PATH}"
|
||||
${_arg_PROPERTIES}
|
||||
)
|
||||
enable_pch(${name})
|
||||
|
||||
if (NOT _arg_SKIP_PCH)
|
||||
enable_pch(${name})
|
||||
endif()
|
||||
|
||||
if (WIN32 AND library_type STREQUAL "SHARED" AND NOT _arg_UNVERSIONED)
|
||||
# Match qmake naming scheme e.g. Library4.dll
|
||||
@@ -309,7 +312,7 @@ endfunction(add_qtc_library)
|
||||
|
||||
function(add_qtc_plugin target_name)
|
||||
cmake_parse_arguments(_arg
|
||||
"SKIP_DEBUG_CMAKE_FILE_CHECK;SKIP_INSTALL;INTERNAL_ONLY;SKIP_TRANSLATION;EXPORT"
|
||||
"SKIP_DEBUG_CMAKE_FILE_CHECK;SKIP_INSTALL;INTERNAL_ONLY;SKIP_TRANSLATION;EXPORT;SKIP_PCH"
|
||||
"VERSION;COMPAT_VERSION;PLUGIN_JSON_IN;PLUGIN_PATH;PLUGIN_NAME;OUTPUT_NAME;BUILD_DEFAULT"
|
||||
"CONDITION;DEPENDS;PUBLIC_DEPENDS;DEFINES;PUBLIC_DEFINES;INCLUDES;PUBLIC_INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PLUGIN_DEPENDS;PLUGIN_RECOMMENDS;PLUGIN_TEST_DEPENDS;PROPERTIES"
|
||||
${ARGN}
|
||||
@@ -518,7 +521,9 @@ function(add_qtc_plugin target_name)
|
||||
IMPORT_PREFIX ""
|
||||
)
|
||||
endif()
|
||||
enable_pch(${target_name})
|
||||
if (NOT _arg_SKIP_PCH)
|
||||
enable_pch(${target_name})
|
||||
endif()
|
||||
|
||||
if (NOT _arg_SKIP_INSTALL)
|
||||
if (_arg_EXPORT)
|
||||
@@ -591,7 +596,7 @@ function(extend_qtc_test target_name)
|
||||
endfunction()
|
||||
|
||||
function(add_qtc_executable name)
|
||||
cmake_parse_arguments(_arg "SKIP_INSTALL;SKIP_TRANSLATION;ALLOW_ASCII_CASTS"
|
||||
cmake_parse_arguments(_arg "SKIP_INSTALL;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;SKIP_PCH"
|
||||
"DESTINATION;COMPONENT;BUILD_DEFAULT"
|
||||
"CONDITION;DEPENDS;DEFINES;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PROPERTIES" ${ARGN})
|
||||
|
||||
@@ -692,7 +697,9 @@ function(add_qtc_executable name)
|
||||
VISIBILITY_INLINES_HIDDEN ON
|
||||
${_arg_PROPERTIES}
|
||||
)
|
||||
enable_pch(${name})
|
||||
if (NOT _arg_SKIP_PCH)
|
||||
enable_pch(${name})
|
||||
endif()
|
||||
|
||||
if (NOT _arg_SKIP_INSTALL)
|
||||
unset(COMPONENT_OPTION)
|
||||
@@ -779,7 +786,7 @@ function(extend_qtc_executable name)
|
||||
endfunction()
|
||||
|
||||
function(add_qtc_test name)
|
||||
cmake_parse_arguments(_arg "GTEST" "TIMEOUT" "DEFINES;DEPENDS;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC" ${ARGN})
|
||||
cmake_parse_arguments(_arg "GTEST" "TIMEOUT" "DEFINES;DEPENDS;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;SKIP_PCH" ${ARGN})
|
||||
|
||||
foreach(dependency ${_arg_DEPENDS})
|
||||
if (NOT TARGET ${dependency} AND NOT _arg_GTEST)
|
||||
@@ -820,7 +827,9 @@ function(add_qtc_test name)
|
||||
BUILD_RPATH "${_RPATH_BASE}/${_RPATH}"
|
||||
INSTALL_RPATH "${_RPATH_BASE}/${_RPATH}"
|
||||
)
|
||||
enable_pch(${name})
|
||||
if (NOT _arg_SKIP_PCH)
|
||||
enable_pch(${name})
|
||||
endif()
|
||||
|
||||
if (NOT _arg_GTEST)
|
||||
add_test(NAME ${name} COMMAND ${name})
|
||||
|
@@ -122,6 +122,17 @@ function(qtc_handle_sccache_support)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(qtc_enable_release_for_debug_configuration)
|
||||
if (MSVC)
|
||||
string(REPLACE "/Od" "/O2" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
string(REPLACE "/Ob0" "/Ob1" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O2")
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(append_extra_translations target_name)
|
||||
if(NOT ARGN)
|
||||
return()
|
||||
|
9
src/libs/3rdparty/cplusplus/CMakeLists.txt
vendored
9
src/libs/3rdparty/cplusplus/CMakeLists.txt
vendored
@@ -41,5 +41,14 @@ add_qtc_library(3rd_cplusplus OBJECT
|
||||
Type.cpp Type.h
|
||||
TypeVisitor.cpp TypeVisitor.h
|
||||
cppassert.h
|
||||
SKIP_PCH
|
||||
PROPERTIES POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
|
||||
if(TARGET 3rd_cplusplus)
|
||||
qtc_enable_release_for_debug_configuration()
|
||||
if (BUILD_WITH_PCH)
|
||||
target_precompile_headers(3rd_cplusplus PRIVATE
|
||||
"${QtCreator_SOURCE_DIR}/src/shared/qtcreator_gui_pch.h")
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -40,4 +40,13 @@ add_qtc_library(CPlusPlus
|
||||
pp-engine.h pp-scanner.cpp
|
||||
pp-scanner.h
|
||||
pp.h
|
||||
SKIP_PCH
|
||||
)
|
||||
|
||||
if(TARGET CPlusPlus)
|
||||
qtc_enable_release_for_debug_configuration()
|
||||
if (BUILD_WITH_PCH)
|
||||
target_precompile_headers(CPlusPlus PRIVATE
|
||||
"${QtCreator_SOURCE_DIR}/src/shared/qtcreator_gui_pch.h")
|
||||
endif()
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user