aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtCreatorAPI.cmake60
-rw-r--r--src/libs/qtcreatorcdbext/CMakeLists.txt82
-rw-r--r--src/tools/wininterrupt/CMakeLists.txt1
3 files changed, 101 insertions, 42 deletions
diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake
index fe1c1b2e763..902ccc02d08 100644
--- a/cmake/QtCreatorAPI.cmake
+++ b/cmake/QtCreatorAPI.cmake
@@ -322,6 +322,17 @@ function(qtc_plugin_enabled varName name)
endif()
endfunction()
+function(qtc_library_enabled varName name)
+ if (NOT (name IN_LIST __QTC_LIBRARIES))
+ message(FATAL_ERROR "extend_qtc_library: Unknown library target \"${name}\"")
+ endif()
+ if (TARGET ${name})
+ set(${varName} ON PARENT_SCOPE)
+ else()
+ set(${varName} OFF PARENT_SCOPE)
+ endif()
+endfunction()
+
function(enable_pch target)
if (BUILD_WITH_PCH)
# Skip PCH for targets that do not use the expected visibility settings:
@@ -417,7 +428,7 @@ endfunction()
function(add_qtc_library name)
cmake_parse_arguments(_arg "STATIC;OBJECT;SKIP_TRANSLATION;BUILD_BY_DEFAULT;ALLOW_ASCII_CASTS"
- "DESTINATION"
+ "DESTINATION;COMPONENT"
"DEFINES;DEPENDS;EXTRA_TRANSLATIONS;INCLUDES;PUBLIC_DEFINES;PUBLIC_DEPENDS;PUBLIC_INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;PROPERTIES" ${ARGN}
)
@@ -432,6 +443,20 @@ function(add_qtc_library name)
update_cached_list(__QTC_LIBRARIES "${name}")
+ # special libraries can be turned off
+ if (_arg_BUILD_BY_DEFAULT)
+ string(TOUPPER "BUILD_LIBRARY_${name}" _build_library_var)
+ set(_build_library_default "ON")
+ if (DEFINED ENV{QTC_${_build_library_var}})
+ set(_build_library_default "$ENV{QTC_${_build_library_var}}")
+ endif()
+ set(${_build_library_var} "${_build_library_default}" CACHE BOOL "Build library ${name}.")
+
+ if (NOT ${_build_library_var})
+ return()
+ endif()
+ endif()
+
compare_sources_with_existing_disk_files(${name} "${_arg_SOURCES}")
set(library_type SHARED)
@@ -529,12 +554,21 @@ function(add_qtc_library name)
set(NAMELINK_OPTION NAMELINK_SKIP)
endif()
+ unset(COMPONENT_OPTION)
+ if (_arg_COMPONENT)
+ set(COMPONENT_OPTION "COMPONENT" "${_arg_COMPONENT}")
+ endif()
+
install(TARGETS ${name}
EXPORT ${IDE_CASED_ID}
- RUNTIME DESTINATION "${_DESTINATION}" OPTIONAL
+ RUNTIME
+ DESTINATION "${_DESTINATION}"
+ ${COMPONENT_OPTION}
+ OPTIONAL
LIBRARY
DESTINATION "${IDE_LIBRARY_PATH}"
${NAMELINK_OPTION}
+ ${COMPONENT_OPTION}
OPTIONAL
OBJECTS
DESTINATION "${IDE_LIBRARY_PATH}"
@@ -871,9 +905,18 @@ function(extend_qtc_plugin target_name)
extend_qtc_target(${target_name} ${ARGN})
endfunction()
+function(extend_qtc_library target_name)
+ qtc_library_enabled(_library_enabled ${target_name})
+ if (NOT _library_enabled)
+ return()
+ endif()
+
+ extend_qtc_target(${target_name} ${ARGN})
+endfunction()
+
function(add_qtc_executable name)
cmake_parse_arguments(_arg "SKIP_INSTALL;SKIP_TRANSLATION;ALLOW_ASCII_CASTS"
- "DESTINATION"
+ "DESTINATION;COMPONENT"
"DEFINES;DEPENDS;EXTRA_TRANSLATIONS;INCLUDES;SOURCES;PROPERTIES" ${ARGN})
if ($_arg_UNPARSED_ARGUMENTS)
@@ -950,7 +993,16 @@ function(add_qtc_executable name)
enable_pch(${name})
if (NOT _arg_SKIP_INSTALL)
- install(TARGETS ${name} DESTINATION "${_DESTINATION}" OPTIONAL)
+ unset(COMPONENT_OPTION)
+ if (_arg_COMPONENT)
+ set(COMPONENT_OPTION "COMPONENT" "${_arg_COMPONENT}")
+ endif()
+
+ install(TARGETS ${name}
+ DESTINATION "${_DESTINATION}"
+ ${COMPONENT_OPTION}
+ OPTIONAL
+ )
update_cached_list(__QTC_INSTALLED_EXECUTABLES
"${_DESTINATION}/${name}${CMAKE_EXECUTABLE_SUFFIX}")
diff --git a/src/libs/qtcreatorcdbext/CMakeLists.txt b/src/libs/qtcreatorcdbext/CMakeLists.txt
index b5554bcc340..1fdf656e9e1 100644
--- a/src/libs/qtcreatorcdbext/CMakeLists.txt
+++ b/src/libs/qtcreatorcdbext/CMakeLists.txt
@@ -33,6 +33,7 @@ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
endif()
add_qtc_library(qtcreatorcdbext
+ COMPONENT qtcreatorcdbext
BUILD_BY_DEFAULT
DEPENDS ${DbgEngLib}
DESTINATION lib/qtcreatorcdbext${ArchSuffix}/
@@ -53,48 +54,53 @@ add_qtc_library(qtcreatorcdbext
symbolgroupvalue.cpp symbolgroupvalue.h
)
-find_package(PythonLibs 3.5)
-if (NOT ${PYTHONLIBS_FOUND})
- message(WARNING "PythonLibs (at least version 3.5) not found. qtcreatorcdbext will be built without Python support.")
- return()
-endif()
-
-set(PythonRegex "^(.*)/(.*)/(python[0-9]+)${CMAKE_IMPORT_LIBRARY_SUFFIX}$")
-if (CMAKE_BUILD_TYPE STREQUAL "Debug")
- set(PythonRegex "^(.*)/(.*)/(python[0-9]+_d)${CMAKE_IMPORT_LIBRARY_SUFFIX}$")
-endif()
-
-foreach(lib IN LISTS PYTHON_LIBRARIES)
- if (lib MATCHES ${PythonRegex})
- set(PythonDll "${CMAKE_MATCH_1}/${CMAKE_MATCH_3}${CMAKE_SHARED_LIBRARY_SUFFIX}")
- break()
+qtc_library_enabled(_library_enabled qtcreatorcdbext)
+if (_library_enabled)
+ find_package(PythonLibs 3.5)
+ if (NOT ${PYTHONLIBS_FOUND})
+ message(WARNING "PythonLibs (at least version 3.5) not found. qtcreatorcdbext will be built without Python support.")
+ return()
endif()
-endforeach()
-if (NOT PythonDll)
+ set(PythonRegex "^(.*)/(.*)/(python[0-9]+)${CMAKE_IMPORT_LIBRARY_SUFFIX}$")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
- message(WARNING "The Debug build of Qt Creator requires Debug Python libraries. Please check your Python installation")
+ set(PythonRegex "^(.*)/(.*)/(python[0-9]+_d)${CMAKE_IMPORT_LIBRARY_SUFFIX}$")
endif()
- message(WARNING "PythonDll not found. qtcreatorcdbext will be built without Python support.")
- return()
-endif()
-extend_qtc_target(qtcreatorcdbext
- DEPENDS "${PYTHON_LIBRARIES}"
- INCLUDES "${PYTHON_INCLUDE_DIR}"
- DEFINES WITH_PYTHON=1
- SOURCES
- pycdbextmodule.cpp pycdbextmodule.h
- pyfield.cpp pyfield.h
- pystdoutredirect.cpp pystdoutredirect.h
- pytype.cpp pytype.h
- pyvalue.cpp pyvalue.h
-)
+ foreach(lib IN LISTS PYTHON_LIBRARIES)
+ if (lib MATCHES ${PythonRegex})
+ set(PythonDll "${CMAKE_MATCH_1}/${CMAKE_MATCH_3}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ break()
+ endif()
+ endforeach()
-install(FILES "${PythonDll}" DESTINATION lib/qtcreatorcdbext${ArchSuffix}/)
+ if (NOT PythonDll)
+ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ message(WARNING "The Debug build of Qt Creator requires Debug Python libraries. Please check your Python installation")
+ endif()
+ message(WARNING "PythonDll not found. qtcreatorcdbext will be built without Python support.")
+ return()
+ endif()
-add_custom_target(copy_python_dll ALL VERBATIM)
-add_custom_command(TARGET copy_python_dll POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy "${PythonDll}" "${PROJECT_BINARY_DIR}/lib/qtcreatorcdbext${ArchSuffix}/"
- VERBATIM
-)
+ extend_qtc_target(qtcreatorcdbext
+ DEPENDS "${PYTHON_LIBRARIES}"
+ INCLUDES "${PYTHON_INCLUDE_DIR}"
+ DEFINES WITH_PYTHON=1
+ SOURCES
+ pycdbextmodule.cpp pycdbextmodule.h
+ pyfield.cpp pyfield.h
+ pystdoutredirect.cpp pystdoutredirect.h
+ pytype.cpp pytype.h
+ pyvalue.cpp pyvalue.h
+ )
+
+ install(FILES "${PythonDll}"
+ DESTINATION lib/qtcreatorcdbext${ArchSuffix}/
+ COMPONENT qtcreatorcdbext)
+
+ add_custom_target(copy_python_dll ALL VERBATIM)
+ add_custom_command(TARGET copy_python_dll POST_BUILD
+ COMMAND "${CMAKE_COMMAND}" -E copy "${PythonDll}" "${PROJECT_BINARY_DIR}/lib/qtcreatorcdbext${ArchSuffix}/"
+ VERBATIM
+ )
+endif()
diff --git a/src/tools/wininterrupt/CMakeLists.txt b/src/tools/wininterrupt/CMakeLists.txt
index 102aa7ca5d1..f87825ed8e8 100644
--- a/src/tools/wininterrupt/CMakeLists.txt
+++ b/src/tools/wininterrupt/CMakeLists.txt
@@ -8,5 +8,6 @@ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
endif()
add_qtc_executable(win${Arch}interrupt
+ COMPONENT wininterrupt
SOURCES wininterrupt.c
)