From 3a01fbc31212c6db305f04069ccc812848c5e9df Mon Sep 17 00:00:00 2001 From: Lu Zhen Date: Tue, 2 Apr 2024 10:36:31 +0800 Subject: [PATCH] fix: [cxx] ninja build failed Log: Change-Id: I875abebc6b8aac5b9645bc7e4bacddb5b2ae0ba1 --- src/base/abstractoutputparser.h | 6 +-- src/plugins/cxx/CMakeLists.txt | 49 +++++-------------- .../cxx/ninja/builder/parser/ninjaparser.cpp | 6 +-- .../cxx/ninja/project/ninjaasynparse.cpp | 37 ++++++++------ 4 files changed, 38 insertions(+), 60 deletions(-) diff --git a/src/base/abstractoutputparser.h b/src/base/abstractoutputparser.h index 714acf5d9..894912cdb 100644 --- a/src/base/abstractoutputparser.h +++ b/src/base/abstractoutputparser.h @@ -2,8 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef IOUTPUTPARSER_H -#define IOUTPUTPARSER_H +#ifndef ABSTRACTOUTPUTPARSER_H +#define ABSTRACTOUTPUTPARSER_H #include "common/type/task.h" #include "common/widget/outputpane.h" @@ -49,4 +49,4 @@ public slots: AbstractOutputParser *outParser = nullptr; }; -#endif // IOUTPUTPARSER_H +#endif // ABSTRACTOUTPUTPARSER_H diff --git a/src/plugins/cxx/CMakeLists.txt b/src/plugins/cxx/CMakeLists.txt index d6888ade9..3f583010d 100644 --- a/src/plugins/cxx/CMakeLists.txt +++ b/src/plugins/cxx/CMakeLists.txt @@ -6,45 +6,18 @@ find_package(Qt5 COMPONENTS Xml REQUIRED) include_directories("${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties") -FILE(GLOB PROJECT_FILES + +FILE(GLOB CXX_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/lexer/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/lexer/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/builder/mainframe/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/builder/mainframe/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/project/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/project/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/option/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/option/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/ninja/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/builder/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/builder/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/builder/parser/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/builder/parser/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/builder/generator/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/builder/generator/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/configWidget/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/configWidget/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/bulidCfgWidget/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/bulidCfgWidget/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/runCfgWidget/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/properties/runCfgWidget/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/cbp/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/cbp/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/transceiver/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/project/transceiver/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/option/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/option/*.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*/*.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*/*/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*/*/*.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*/*/*/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*/*/*/*/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.json" ) @@ -57,7 +30,7 @@ set(QT_THEME) add_library(${PROJECT_NAME} SHARED - ${PROJECT_FILES} + ${CXX_FILES} ${QT_THEME} ${CXX_QRC} ) diff --git a/src/plugins/cxx/ninja/builder/parser/ninjaparser.cpp b/src/plugins/cxx/ninja/builder/parser/ninjaparser.cpp index 14b1f6cb5..d0d4202a2 100644 --- a/src/plugins/cxx/ninja/builder/parser/ninjaparser.cpp +++ b/src/plugins/cxx/ninja/builder/parser/ninjaparser.cpp @@ -4,8 +4,8 @@ #include "ninjaparser.h" -#include "services/builder/task.h" -#include "services/builder/fileutils.h" +#include "common/type/task.h" +#include "common/util/fileutils.h" const char TASK_CATEGORY_BUILDSYSTEM[] = "Task.Category.Buildsystem"; @@ -19,7 +19,7 @@ void NinjaParser::stdOutput(const QString &line, OutputPane::OutputFormat format QString newContent = line; emit outputAdded(newContent, format); - IOutputParser::stdOutput(newContent, format); + AbstractOutputParser::stdOutput(newContent, format); } void NinjaParser::stdError(const QString &line) diff --git a/src/plugins/cxx/ninja/project/ninjaasynparse.cpp b/src/plugins/cxx/ninja/project/ninjaasynparse.cpp index 4657a5553..230d23d82 100644 --- a/src/plugins/cxx/ninja/project/ninjaasynparse.cpp +++ b/src/plugins/cxx/ninja/project/ninjaasynparse.cpp @@ -92,14 +92,16 @@ void NinjaAsynParse::createRows(const QString &path) QString childPath = dirItera.next().remove(0, rootPath.size()); QFileSystemWatcher::addPath(dirItera.filePath()); QStandardItem *item = findItem(childPath); - QIcon icon = CustomIcons::icon(dirItera.fileInfo()); - auto newItem = new QStandardItem(icon, dirItera.fileName()); - newItem->setToolTip(dirItera.filePath()); - if (!item) { - d->rows.append(newItem); - } else { - item->appendRow(newItem); - } + QMetaObject::invokeMethod(this, [&](){ + QIcon icon = CustomIcons::icon(dirItera.fileInfo()); + auto newItem = new QStandardItem(icon, dirItera.fileName()); + newItem->setToolTip(dirItera.filePath()); + if (!item) { + d->rows.append(newItem); + } else { + item->appendRow(newItem); + } + }); } } {// 避免变量冲突 迭代文件 @@ -111,14 +113,17 @@ void NinjaAsynParse::createRows(const QString &path) while (fileItera.hasNext()) { QString childPath = fileItera.next().remove(0, rootPath.size()); QStandardItem *item = findItem(childPath); - QIcon icon = CustomIcons::icon(fileItera.fileInfo()); - auto newItem = new QStandardItem(icon, fileItera.fileName()); - newItem->setToolTip(fileItera.filePath()); - if (!item) { - d->rows.append(newItem); - } else { - item->appendRow(newItem); - } + // run in main thread. + QMetaObject::invokeMethod(this, [&](){ + QIcon icon = CustomIcons::icon(fileItera.fileInfo()); + auto newItem = new QStandardItem(icon, fileItera.fileName()); + newItem->setToolTip(fileItera.filePath()); + if (!item) { + d->rows.append(newItem); + } else { + item->appendRow(newItem); + } + }); } } }