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()
|
endfunction()
|
||||||
|
|
||||||
function(add_qtc_library name)
|
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"
|
"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}
|
"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}"
|
ARCHIVE_OUTPUT_DIRECTORY "${_output_binary_dir}/${IDE_LIBRARY_PATH}"
|
||||||
${_arg_PROPERTIES}
|
${_arg_PROPERTIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (NOT _arg_SKIP_PCH)
|
||||||
enable_pch(${name})
|
enable_pch(${name})
|
||||||
|
endif()
|
||||||
|
|
||||||
if (WIN32 AND library_type STREQUAL "SHARED" AND NOT _arg_UNVERSIONED)
|
if (WIN32 AND library_type STREQUAL "SHARED" AND NOT _arg_UNVERSIONED)
|
||||||
# Match qmake naming scheme e.g. Library4.dll
|
# Match qmake naming scheme e.g. Library4.dll
|
||||||
@@ -309,7 +312,7 @@ endfunction(add_qtc_library)
|
|||||||
|
|
||||||
function(add_qtc_plugin target_name)
|
function(add_qtc_plugin target_name)
|
||||||
cmake_parse_arguments(_arg
|
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"
|
"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"
|
"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}
|
${ARGN}
|
||||||
@@ -518,7 +521,9 @@ function(add_qtc_plugin target_name)
|
|||||||
IMPORT_PREFIX ""
|
IMPORT_PREFIX ""
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
if (NOT _arg_SKIP_PCH)
|
||||||
enable_pch(${target_name})
|
enable_pch(${target_name})
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT _arg_SKIP_INSTALL)
|
if (NOT _arg_SKIP_INSTALL)
|
||||||
if (_arg_EXPORT)
|
if (_arg_EXPORT)
|
||||||
@@ -591,7 +596,7 @@ function(extend_qtc_test target_name)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(add_qtc_executable name)
|
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"
|
"DESTINATION;COMPONENT;BUILD_DEFAULT"
|
||||||
"CONDITION;DEPENDS;DEFINES;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PROPERTIES" ${ARGN})
|
"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
|
VISIBILITY_INLINES_HIDDEN ON
|
||||||
${_arg_PROPERTIES}
|
${_arg_PROPERTIES}
|
||||||
)
|
)
|
||||||
|
if (NOT _arg_SKIP_PCH)
|
||||||
enable_pch(${name})
|
enable_pch(${name})
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT _arg_SKIP_INSTALL)
|
if (NOT _arg_SKIP_INSTALL)
|
||||||
unset(COMPONENT_OPTION)
|
unset(COMPONENT_OPTION)
|
||||||
@@ -779,7 +786,7 @@ function(extend_qtc_executable name)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(add_qtc_test name)
|
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})
|
foreach(dependency ${_arg_DEPENDS})
|
||||||
if (NOT TARGET ${dependency} AND NOT _arg_GTEST)
|
if (NOT TARGET ${dependency} AND NOT _arg_GTEST)
|
||||||
@@ -820,7 +827,9 @@ function(add_qtc_test name)
|
|||||||
BUILD_RPATH "${_RPATH_BASE}/${_RPATH}"
|
BUILD_RPATH "${_RPATH_BASE}/${_RPATH}"
|
||||||
INSTALL_RPATH "${_RPATH_BASE}/${_RPATH}"
|
INSTALL_RPATH "${_RPATH_BASE}/${_RPATH}"
|
||||||
)
|
)
|
||||||
|
if (NOT _arg_SKIP_PCH)
|
||||||
enable_pch(${name})
|
enable_pch(${name})
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT _arg_GTEST)
|
if (NOT _arg_GTEST)
|
||||||
add_test(NAME ${name} COMMAND ${name})
|
add_test(NAME ${name} COMMAND ${name})
|
||||||
|
@@ -122,6 +122,17 @@ function(qtc_handle_sccache_support)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
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)
|
function(append_extra_translations target_name)
|
||||||
if(NOT ARGN)
|
if(NOT ARGN)
|
||||||
return()
|
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
|
Type.cpp Type.h
|
||||||
TypeVisitor.cpp TypeVisitor.h
|
TypeVisitor.cpp TypeVisitor.h
|
||||||
cppassert.h
|
cppassert.h
|
||||||
|
SKIP_PCH
|
||||||
PROPERTIES POSITION_INDEPENDENT_CODE ON
|
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-engine.h pp-scanner.cpp
|
||||||
pp-scanner.h
|
pp-scanner.h
|
||||||
pp.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