diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index e89274a061a..ed3602e6d6d 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -602,7 +602,7 @@ function(extend_qtc_test target_name) endfunction() function(add_qtc_executable name) - cmake_parse_arguments(_arg "SKIP_INSTALL;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;SKIP_PCH" + cmake_parse_arguments(_arg "SKIP_INSTALL;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;SKIP_PCH;QTC_RUNNABLE" "DESTINATION;COMPONENT;BUILD_DEFAULT" "CONDITION;DEPENDS;DEFINES;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PROPERTIES" ${ARGN}) @@ -707,6 +707,11 @@ function(add_qtc_executable name) enable_pch(${name}) endif() + if (_arg_QTC_RUNNABLE) + # Used by QtCreator to select the default target in the project + set_target_properties(${name} PROPERTIES FOLDER "qtc_runnable") + endif() + if (NOT _arg_SKIP_INSTALL) unset(COMPONENT_OPTION) if (_arg_COMPONENT) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index b08211cf573..43650cab5ad 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -17,6 +17,7 @@ add_qtc_executable(qtcreator MACOSX_BUNDLE ON OUTPUT_NAME "${IDE_APP_TARGET}" DESTINATION "${IDE_APP_PATH}" + QTC_RUNNABLE ) if (NOT TARGET qtcreator) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index b89d5d74ef6..688c0f26627 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1009,6 +1009,7 @@ const QList CMakeBuildSystem::appTargets() const bti.workingDirectory = ct.workingDirectory; bti.buildKey = buildKey; bti.usesTerminal = !ct.linksToQtGui; + bti.isQtcRunnable = ct.qtcRunnable; // Workaround for QTCREATORBUG-19354: bti.runEnvModifier = [this, buildKey](Environment &env, bool enabled) { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildtarget.h b/src/plugins/cmakeprojectmanager/cmakebuildtarget.h index c2a51c67fc4..6bc7d41249e 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildtarget.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildtarget.h @@ -54,6 +54,7 @@ public: Utils::FilePath executable; // TODO: rename to output? TargetType targetType = UtilityType; bool linksToQtGui = false; + bool qtcRunnable = true; Utils::FilePath workingDirectory; Utils::FilePath sourceDirectory; Utils::FilePath makeCommand; diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 1d96dad7f91..7b38aa0f41f 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -256,6 +256,8 @@ QList generateBuildTargets(const PreprocessedData &input, || f.fragment.contains("Qt6Gui")); }); + ct.qtcRunnable = t.folderTargetProperty == "qtc_runnable"; + // Extract library directories for executables: for (const FragmentInfo &f : t.link.value().fragments) { if (f.role == "flags") // ignore all flags fragments