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