CMakeProjectManager: Add package manager auto-setup

Adds CMAKE_PROJECT_INCLUDE_BEFORE as initial CMake parameters
with a path to a auto-setup.cmake script that will run
conan install if a conanfile.txt is found in the prject.

A project can have a local QtCreatorPackageManager.cmake file
that will be loaded if exists.

The auto setup can be controlled via the following CMake variables:

* QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP
* QT_CREATOR_SKIP_CONAN_SETUP
* QT_CREATOR_SKIP_VCPKG_SETUP

conan.cmake is taken from https://github.com/conan-io/cmake-conan
which takes care of the conan specific compiler cruft. License
is MIT.

Fixes: QTCREATORBUG-25362
Change-Id: I70a6e1abc5600851d048f1590ca24204ce52a503
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2021-02-18 18:50:11 +01:00
parent 813d020fa5
commit cc0fa86ffd
10 changed files with 899 additions and 6 deletions

View File

@@ -32,6 +32,7 @@ namespace {
static const char SETTINGS_KEY[] = "CMakeSpecificSettings";
static const char AFTER_ADD_FILE_ACTION_KEY[] = "ProjectPopupSetting";
static const char NINJA_PATH[] = "NinjaPath";
static const char PACKAGE_MANAGER_AUTO_SETUP[] = "PackageManagerAutoSetup";
}
void CMakeSpecificSettings::fromSettings(QSettings *settings)
@@ -43,12 +44,15 @@ void CMakeSpecificSettings::fromSettings(QSettings *settings)
m_ninjaPath = Utils::FilePath::fromUserInput(
settings->value(rootKey + NINJA_PATH, QString()).toString());
m_packageManagerAutoSetup = settings->value(rootKey + PACKAGE_MANAGER_AUTO_SETUP, true).toBool();
}
void CMakeSpecificSettings::toSettings(QSettings *settings) const
{
settings->beginGroup(QString(SETTINGS_KEY));
settings->setValue(QString(AFTER_ADD_FILE_ACTION_KEY), static_cast<int>(m_afterAddFileToProjectSetting));
settings->setValue(QString(PACKAGE_MANAGER_AUTO_SETUP), m_packageManagerAutoSetup);
settings->endGroup();
}
}