forked from qt-creator/qt-creator
CMakePM: Add support for qtc_runnable feature
This will allow for the Qt Creator's CMake build only qtcreator target to be selected as runnable. Similar to qmake's qtc_runnable or Qbs's qtcRunnable features. Fixes: QTCREATORBUG-25908 Change-Id: I6416873d0ad9cfec4960d98fc4b289ec98cc58b1 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -602,7 +602,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;SKIP_PCH"
|
cmake_parse_arguments(_arg "SKIP_INSTALL;SKIP_TRANSLATION;ALLOW_ASCII_CASTS;SKIP_PCH;QTC_RUNNABLE"
|
||||||
"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})
|
||||||
|
|
||||||
@@ -707,6 +707,11 @@ function(add_qtc_executable name)
|
|||||||
enable_pch(${name})
|
enable_pch(${name})
|
||||||
endif()
|
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)
|
if (NOT _arg_SKIP_INSTALL)
|
||||||
unset(COMPONENT_OPTION)
|
unset(COMPONENT_OPTION)
|
||||||
if (_arg_COMPONENT)
|
if (_arg_COMPONENT)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ add_qtc_executable(qtcreator
|
|||||||
MACOSX_BUNDLE ON
|
MACOSX_BUNDLE ON
|
||||||
OUTPUT_NAME "${IDE_APP_TARGET}"
|
OUTPUT_NAME "${IDE_APP_TARGET}"
|
||||||
DESTINATION "${IDE_APP_PATH}"
|
DESTINATION "${IDE_APP_PATH}"
|
||||||
|
QTC_RUNNABLE
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT TARGET qtcreator)
|
if (NOT TARGET qtcreator)
|
||||||
|
|||||||
@@ -1009,6 +1009,7 @@ const QList<BuildTargetInfo> CMakeBuildSystem::appTargets() const
|
|||||||
bti.workingDirectory = ct.workingDirectory;
|
bti.workingDirectory = ct.workingDirectory;
|
||||||
bti.buildKey = buildKey;
|
bti.buildKey = buildKey;
|
||||||
bti.usesTerminal = !ct.linksToQtGui;
|
bti.usesTerminal = !ct.linksToQtGui;
|
||||||
|
bti.isQtcRunnable = ct.qtcRunnable;
|
||||||
|
|
||||||
// Workaround for QTCREATORBUG-19354:
|
// Workaround for QTCREATORBUG-19354:
|
||||||
bti.runEnvModifier = [this, buildKey](Environment &env, bool enabled) {
|
bti.runEnvModifier = [this, buildKey](Environment &env, bool enabled) {
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public:
|
|||||||
Utils::FilePath executable; // TODO: rename to output?
|
Utils::FilePath executable; // TODO: rename to output?
|
||||||
TargetType targetType = UtilityType;
|
TargetType targetType = UtilityType;
|
||||||
bool linksToQtGui = false;
|
bool linksToQtGui = false;
|
||||||
|
bool qtcRunnable = true;
|
||||||
Utils::FilePath workingDirectory;
|
Utils::FilePath workingDirectory;
|
||||||
Utils::FilePath sourceDirectory;
|
Utils::FilePath sourceDirectory;
|
||||||
Utils::FilePath makeCommand;
|
Utils::FilePath makeCommand;
|
||||||
|
|||||||
@@ -256,6 +256,8 @@ QList<CMakeBuildTarget> generateBuildTargets(const PreprocessedData &input,
|
|||||||
|| f.fragment.contains("Qt6Gui"));
|
|| f.fragment.contains("Qt6Gui"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ct.qtcRunnable = t.folderTargetProperty == "qtc_runnable";
|
||||||
|
|
||||||
// Extract library directories for executables:
|
// Extract library directories for executables:
|
||||||
for (const FragmentInfo &f : t.link.value().fragments) {
|
for (const FragmentInfo &f : t.link.value().fragments) {
|
||||||
if (f.role == "flags") // ignore all flags fragments
|
if (f.role == "flags") // ignore all flags fragments
|
||||||
|
|||||||
Reference in New Issue
Block a user