diff options
author | Cristian Adam <cristian.adam@qt.io> | 2024-02-22 16:22:46 +0100 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2024-02-26 08:59:51 +0000 |
commit | 2d7af40007eae8088aabfd75bbe0dc4bfc47cf2e (patch) | |
tree | 1561a8748efd5bb9345b695319bfe947a083cfbb /src/plugins/cmakeprojectmanager | |
parent | 462caec2789a52656ca31f8d52a87d35729b67eb (diff) |
CMakePM: Consider envvar QTC_CMAKE_USE_JUNCTIONS
This envrionment variable can be set globally or locally for a project
via '.shared' configuration.
See https://doc.qt.io/qtcreator/creator-sharing-project-settings.html
for details.
Task-number: QTCREATORBUG-30385
Change-Id: Ie28caac8f4232678c5761b54ce370d1aeb139389
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp index 16473a6e79..e20c3c58eb 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp @@ -16,6 +16,7 @@ #include <coreplugin/icore.h> #include <projectexplorer/buildsystem.h> +#include <projectexplorer/projectmanager.h> #include <projectexplorer/projecttree.h> #include <projectexplorer/target.h> @@ -69,6 +70,7 @@ typedef struct _REPARSE_DATA_BUFFER { #endif using namespace Core; +using namespace ProjectExplorer; using namespace Utils; namespace CMakeProjectManager { @@ -451,8 +453,19 @@ FilePath CMakeToolManager::mappedFilePath(const FilePath &path) if (path.needsDevice()) return path; - Internal::settings(); - if (!Internal::settings().useJunctionsForSourceAndBuildDirectories()) + auto project = ProjectManager::startupProject(); + auto environment = Environment::systemEnvironment(); + if (project) + environment.modify(project->additionalEnvironment()); + const bool enableJunctions + = QVariant( + environment.value_or("QTC_CMAKE_USE_JUNCTIONS", + Internal::settings().useJunctionsForSourceAndBuildDirectories() + ? "1" + : "0")) + .toBool(); + + if (!enableJunctions) return path; if (!d->m_junctionsDir.isDir()) @@ -583,14 +596,17 @@ CMakeToolManagerPrivate::CMakeToolManagerPrivate() m_junctionsDir = FilePath::fromString(*std::min_element(locations.begin(), locations.end())) .pathAppended("QtCreator/Links"); - if (Utils::qtcEnvironmentVariableIsSet("QTC_CMAKE_JUNCTIONS_DIR")) { - m_junctionsDir = FilePath::fromUserInput( - Utils::qtcEnvironmentVariable("QTC_CMAKE_JUNCTIONS_DIR")); - } - if (Utils::qtcEnvironmentVariableIsSet("QTC_CMAKE_JUNCTIONS_HASH_LENGTH")) { + auto project = ProjectManager::startupProject(); + auto environment = Environment::systemEnvironment(); + if (project) + environment.modify(project->additionalEnvironment()); + + if (environment.hasKey("QTC_CMAKE_JUNCTIONS_DIR")) + m_junctionsDir = FilePath::fromUserInput(environment.value("QTC_CMAKE_JUNCTIONS_DIR")); + + if (environment.hasKey("QTC_CMAKE_JUNCTIONS_HASH_LENGTH")) { bool ok = false; - const int hashLength - = Utils::qtcEnvironmentVariableIntValue("QTC_CMAKE_JUNCTIONS_HASH_LENGTH", &ok); + const int hashLength = environment.value("QTC_CMAKE_JUNCTIONS_HASH_LENGTH").toInt(&ok); if (ok && hashLength >= 4 && hashLength < 32) m_junctionsHashLength = hashLength; } |