Conan: More direct aspect use in ConanInstallStep

Also fix use of a the potentially remote conanfile by using
only the .path() when passing to the (remote) install step.

Change-Id: If588dc8e2777a9c6515845886d9f3a9ab881c97f
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-07-10 13:05:36 +02:00
parent 27d783fd1e
commit f1a6135c1e

View File

@@ -62,6 +62,10 @@ public:
private: private:
bool init() final; bool init() final;
void setupOutputFormatter(OutputFormatter *formatter) final; void setupOutputFormatter(OutputFormatter *formatter) final;
FilePathAspect conanFile{this};
StringAspect additionalArguments{this};
BoolAspect buildMissing{this};
}; };
ConanInstallStep::ConanInstallStep(BuildStepList *bsl, Id id) ConanInstallStep::ConanInstallStep(BuildStepList *bsl, Id id)
@@ -70,36 +74,32 @@ ConanInstallStep::ConanInstallStep(BuildStepList *bsl, Id id)
setUseEnglishOutput(); setUseEnglishOutput();
setDisplayName(Tr::tr("Conan install")); setDisplayName(Tr::tr("Conan install"));
auto conanFile = addAspect<FilePathAspect>(); conanFile.setSettingsKey("ConanPackageManager.InstallStep.ConanFile");
conanFile->setSettingsKey("ConanPackageManager.InstallStep.ConanFile"); conanFile.setValue(conanFilePath(project(), project()->projectDirectory() / "conanfile.txt"));
conanFile->setValue(conanFilePath(project(), conanFile.setLabelText(Tr::tr("Conan file:"));
project()->projectDirectory() / "conanfile.txt")); conanFile.setToolTip(Tr::tr("Enter location of conanfile.txt or conanfile.py."));
conanFile->setLabelText(Tr::tr("Conan file:")); conanFile.setExpectedKind(PathChooser::File);
conanFile->setToolTip(Tr::tr("Enter location of conanfile.txt or conanfile.py."));
conanFile->setExpectedKind(PathChooser::File);
auto additionalArguments = addAspect<StringAspect>(); additionalArguments.setSettingsKey("ConanPackageManager.InstallStep.AdditionalArguments");
additionalArguments->setSettingsKey("ConanPackageManager.InstallStep.AdditionalArguments"); additionalArguments.setLabelText(Tr::tr("Additional arguments:"));
additionalArguments->setLabelText(Tr::tr("Additional arguments:")); additionalArguments.setDisplayStyle(StringAspect::LineEditDisplay);
additionalArguments->setDisplayStyle(StringAspect::LineEditDisplay);
auto buildMissing = addAspect<BoolAspect>(); buildMissing.setSettingsKey("ConanPackageManager.InstallStep.BuildMissing");
buildMissing->setSettingsKey("ConanPackageManager.InstallStep.BuildMissing"); buildMissing.setLabel("Build missing:", BoolAspect::LabelPlacement::InExtraLabel);
buildMissing->setLabel("Build missing:", BoolAspect::LabelPlacement::InExtraLabel); buildMissing.setDefaultValue(true);
buildMissing->setDefaultValue(true); buildMissing.setValue(true);
buildMissing->setValue(true);
setCommandLineProvider([=] { setCommandLineProvider([this] {
BuildConfiguration::BuildType bt = buildConfiguration()->buildType(); BuildConfiguration::BuildType bt = buildConfiguration()->buildType();
const QString buildType = bt == BuildConfiguration::Release ? QString("Release") const QString buildType = bt == BuildConfiguration::Release ? QString("Release")
: QString("Debug"); : QString("Debug");
CommandLine cmd(settings().conanFilePath()); CommandLine cmd(settings().conanFilePath());
cmd.addArgs({"install", "-s", "build_type=" + buildType}); cmd.addArgs({"install", "-s", "build_type=" + buildType});
if (buildMissing->value()) if (buildMissing())
cmd.addArg("--build=missing"); cmd.addArg("--build=missing");
cmd.addArg(conanFile->value()); cmd.addArg(conanFile().path());
cmd.addArgs(additionalArguments->value(), CommandLine::Raw); cmd.addArgs(additionalArguments(), CommandLine::Raw);
return cmd; return cmd;
}); });