CMakePM: Add new / existing source files to project

This will add the new added source files (.cpp, .h, .qrc, .ui) to the
corresponding CMake source file as last arguments for known CMake
functions like add_executable, add_library as well for the Qt
counterprarts qt_add_executable or qt_add_library.

For custom functions the code will insert a target_sources() call.
Subsequent calls will add the files to the last target_sources.

The previous copy to clipboard mechanism and settings have been removed.

Fixes: QTCREATORBUG-26006
Fixes: QTCREATORBUG-27213
Fixes: QTCREATORBUG-28493
Fixes: QTCREATORBUG-29006
Change-Id: Ia6e075e4e5718e4106c1236673d469139611a677
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Cristian Adam
2023-04-13 12:52:39 +02:00
parent d74c2369ee
commit d8be2491a5
17 changed files with 283 additions and 96 deletions

View File

@@ -27,6 +27,8 @@ using namespace CMakeProjectManager::Internal::FileApiDetails;
namespace CMakeProjectManager::Internal {
static Q_LOGGING_CATEGORY(cmakeLogger, "qtc.cmake.fileApiExtractor", QtWarningMsg);
// --------------------------------------------------------------------
// Helpers:
// --------------------------------------------------------------------
@@ -53,7 +55,20 @@ CMakeFileResult extractCMakeFilesData(const std::vector<CMakeFileInfo> &cmakefil
const int oldCount = result.cmakeFiles.count();
CMakeFileInfo absolute(info);
absolute.path = sfn;
expected_str<QByteArray> fileContent = sfn.fileContents();
std::string errorString;
if (fileContent) {
fileContent = fileContent->replace("\r\n", "\n");
if (!absolute.cmakeListFile.ParseString(fileContent->toStdString(),
sfn.fileName().toStdString(),
errorString))
qCWarning(cmakeLogger)
<< "Failed to parse:" << sfn.path() << QString::fromLatin1(errorString);
}
result.cmakeFiles.insert(absolute);
if (oldCount < result.cmakeFiles.count()) {
if (info.isCMake && !info.isCMakeListsDotTxt) {
// Skip files that cmake considers to be part of the installation -- but include