From bfc1b03ae3d1f952e25c5d11a323fbd6da95a568 Mon Sep 17 00:00:00 2001 From: Roy Qu Date: Sun, 13 Aug 2023 18:53:48 +0800 Subject: [PATCH] use sdcc to create hex/bin files --- RedPandaIDE/RedPandaIDE.pro | 9 +- RedPandaIDE/compiler/compiler.cpp | 35 ++- RedPandaIDE/compiler/compiler.h | 3 +- RedPandaIDE/compiler/compilermanager.cpp | 10 +- RedPandaIDE/compiler/filecompiler.cpp | 5 + RedPandaIDE/compiler/projectcompiler.cpp | 4 +- RedPandaIDE/settings.cpp | 4 +- RedPandaIDE/settings.h | 2 +- .../compilersetoptionwidget.cpp | 41 +++ .../settingsdialog/compilersetoptionwidget.ui | 88 +++--- RedPandaIDE/systemconsts.h | 11 +- RedPandaIDE/translations/RedPandaIDE_pt_BR.ts | 61 ++++ RedPandaIDE/translations/RedPandaIDE_zh_CN.ts | 293 +++++++++++------- RedPandaIDE/translations/RedPandaIDE_zh_TW.ts | 61 ++++ 14 files changed, 460 insertions(+), 167 deletions(-) diff --git a/RedPandaIDE/RedPandaIDE.pro b/RedPandaIDE/RedPandaIDE.pro index 985d10de..c57e629b 100644 --- a/RedPandaIDE/RedPandaIDE.pro +++ b/RedPandaIDE/RedPandaIDE.pro @@ -7,7 +7,7 @@ CONFIG += nokey # CONFIG += ENABLE_VCS # uncomment the following line to enable sdcc support -# CONFIG += ENABLE_SDCC +CONFIG += ENABLE_SDCC isEmpty(APP_NAME) { APP_NAME = RedPandaCPP @@ -395,6 +395,13 @@ FORMS += \ ENABLE_SDCC { DEFINES += ENABLE_SDCC + + SOURCES += \ + compiler/sdccfilecompiler.cpp + + HEADERS += \ + compiler/sdccfilecompiler.h + } ENABLE_VCS { diff --git a/RedPandaIDE/compiler/compiler.cpp b/RedPandaIDE/compiler/compiler.cpp index 29633c71..935bd80a 100644 --- a/RedPandaIDE/compiler/compiler.cpp +++ b/RedPandaIDE/compiler/compiler.cpp @@ -66,7 +66,12 @@ void Compiler::run() timer.start(); runCommand(mCompiler, mArguments, mDirectory, pipedText()); for(int i=0;i \"%3\"").arg(extractFileName(mExtraCompilersList[i]), mExtraArgumentsList[i], mExtraOutputFilesList[i])); + } + runCommand(mExtraCompilersList[i],mExtraArgumentsList[i],mDirectory, pipedText(),mExtraOutputFilesList[i]); } log(""); log(tr("Compile Result:")); @@ -647,7 +652,7 @@ bool Compiler::parseForceUTF8ForAutolink(const QString &filename, QSet return false; } -void Compiler::runCommand(const QString &cmd, const QString &arguments, const QString &workingDir, const QByteArray& inputText) +void Compiler::runCommand(const QString &cmd, const QString &arguments, const QString &workingDir, const QByteArray& inputText, const QString& outputFile) { QProcess process; mStop = false; @@ -673,8 +678,14 @@ void Compiler::runCommand(const QString &cmd, const QString &arguments, const Q process.setProcessEnvironment(env); process.setArguments(splitProcessCommand(arguments)); process.setWorkingDirectory(workingDir); - - + QFile output; + if (!outputFile.isEmpty()) { + output.setFileName(outputFile); + if (!output.open(QFile::WriteOnly | QFile::Truncate)) { + this->error(tr("Can't open file \"%1\" for write!")); + return; + }; + } process.connect(&process, &QProcess::errorOccurred, [&](){ errorOccurred= true; @@ -685,11 +696,15 @@ void Compiler::runCommand(const QString &cmd, const QString &arguments, const Q else this->error(QString::fromLocal8Bit( process.readAllStandardError())); }); - process.connect(&process, &QProcess::readyReadStandardOutput,[&process,this,outputUTF8](){ - if (outputUTF8) - this->log(QString::fromUtf8(process.readAllStandardOutput())); - else - this->log(QString::fromLocal8Bit( process.readAllStandardOutput())); + process.connect(&process, &QProcess::readyReadStandardOutput,[&process,this,outputUTF8,&outputFile,&output](){ + if (!outputFile.isEmpty()) { + output.write(process.readAllStandardOutput()); + } else { + if (outputUTF8) + this->log(QString::fromUtf8(process.readAllStandardOutput())); + else + this->log(QString::fromLocal8Bit( process.readAllStandardOutput())); + } }); process.connect(&process, QOverload::of(&QProcess::finished),[this](){ this->error(COMPILE_PROCESS_END); @@ -738,6 +753,8 @@ void Compiler::runCommand(const QString &cmd, const QString &arguments, const Q throw CompileError(tr("An unknown error occurred.")); } } + if (!outputFile.isEmpty()) + output.close(); } PCppParser Compiler::parser() const diff --git a/RedPandaIDE/compiler/compiler.h b/RedPandaIDE/compiler/compiler.h index 11eb545b..974cb175 100644 --- a/RedPandaIDE/compiler/compiler.h +++ b/RedPandaIDE/compiler/compiler.h @@ -84,7 +84,7 @@ protected: QSet& parsedFiles); void log(const QString& msg); void error(const QString& msg); - void runCommand(const QString& cmd, const QString& arguments, const QString& workingDir, const QByteArray& inputText=QByteArray()); + void runCommand(const QString& cmd, const QString& arguments, const QString& workingDir, const QByteArray& inputText=QByteArray(), const QString& outputFile=QString()); protected: bool mSilent; @@ -93,6 +93,7 @@ protected: QString mArguments; QStringList mExtraCompilersList; QStringList mExtraArgumentsList; + QStringList mExtraOutputFilesList; QString mOutputFile; int mErrorCount; int mWarningCount; diff --git a/RedPandaIDE/compiler/compilermanager.cpp b/RedPandaIDE/compiler/compilermanager.cpp index 7914a008..aa7b5475 100644 --- a/RedPandaIDE/compiler/compilermanager.cpp +++ b/RedPandaIDE/compiler/compilermanager.cpp @@ -16,6 +16,9 @@ */ #include "compilermanager.h" #include "filecompiler.h" +#ifdef ENABLE_SDCC +#include "sdccfilecompiler.h" +#endif #include "stdincompiler.h" #include "../mainwindow.h" #include "executablerunner.h" @@ -87,7 +90,12 @@ void CompilerManager::compile(const QString& filename, const QByteArray& encodin mCompileErrorCount = 0; mCompileIssueCount = 0; //deleted when thread finished - mCompiler = new FileCompiler(filename,encoding,compileType,false,false); +#ifdef ENABLE_SDCC + if (pSettings->compilerSets().defaultSet()->compilerType()==CompilerType::SDCC) { + mCompiler = new SDCCFileCompiler(filename,encoding,compileType); + } else +#endif + mCompiler = new FileCompiler(filename,encoding,compileType,false,false); mCompiler->setRebuild(rebuild); connect(mCompiler, &Compiler::finished, mCompiler, &QObject::deleteLater); connect(mCompiler, &Compiler::compileFinished, this, &CompilerManager::onCompileFinished); diff --git a/RedPandaIDE/compiler/filecompiler.cpp b/RedPandaIDE/compiler/filecompiler.cpp index ef32ac7a..477c2439 100644 --- a/RedPandaIDE/compiler/filecompiler.cpp +++ b/RedPandaIDE/compiler/filecompiler.cpp @@ -19,6 +19,7 @@ #include "../mainwindow.h" #include "compilermanager.h" #include "qsynedit/syntaxer/asm.h" +#include "../systemconsts.h" #include #include @@ -84,7 +85,11 @@ bool FileCompiler::prepareForCompile() case Settings::CompilerSet::CompilationStage::GenerateExecutable: mOutputFile = changeFileExt(mFilename,compilerSet()->executableSuffix()); } + if (compilerSet()->compilerType()==CompilerType::SDCC) { + if (compilerSet()->executableSuffix()==SDCC_IHX_SUFFIX) { + } + } mArguments+=QString(" -o \"%1\"").arg(mOutputFile); #if defined(ARCH_X86_64) || defined(ARCH_X86) diff --git a/RedPandaIDE/compiler/projectcompiler.cpp b/RedPandaIDE/compiler/projectcompiler.cpp index b4535601..a2c3c3a3 100644 --- a/RedPandaIDE/compiler/projectcompiler.cpp +++ b/RedPandaIDE/compiler/projectcompiler.cpp @@ -609,6 +609,7 @@ bool ProjectCompiler::prepareForCompile() mProject->directory(), mProject->makeFileName())); mExtraCompilersList.append(mCompiler); + mExtraOutputFilesList.append(""); mExtraArgumentsList.append(QString(" %1 -f \"%2\" all").arg(parallelParam, extractRelativePath( mProject->directory(), @@ -625,9 +626,6 @@ bool ProjectCompiler::prepareForCompile() log("--------"); log(tr("- makefile processer: %1").arg(mCompiler)); log(tr("- Command: %1 %2").arg(extractFileName(mCompiler)).arg(mArguments)); - for(int i=0;i #include "../utils.h" #include "../iconsmanager.h" +#include "../systemconsts.h" #include #include #include @@ -138,6 +139,38 @@ static void loadCompilerSetSettings(Settings::PCompilerSet pSet, Ui::CompilerSet default: ui->rbGenerateExecutable->setChecked(true); } +#ifdef ENABLE_SDCC + bool isSDCC = (pSet->compilerType()==CompilerType::SDCC); + ui->grpCompilationStages->setVisible(!isSDCC); + ui->lbPreprocessingSuffix->setVisible(!isSDCC); + ui->txtPreprocessingSuffix->setVisible(!isSDCC); + ui->lbCompilingSuffix->setVisible(!isSDCC); + ui->txtCompilationSuffix->setVisible(!isSDCC); + ui->lbExecSuffix->setVisible(!isSDCC); + ui->txtExecutableSuffix->setVisible(!isSDCC); + ui->lbBinarySuffix->setVisible(isSDCC); + ui->cbBinarySuffix->setVisible(isSDCC); + if (isSDCC) { + ui->cbBinarySuffix->clear(); + ui->cbBinarySuffix->addItem(SDCC_IHX_SUFFIX); + ui->cbBinarySuffix->addItem(SDCC_HEX_SUFFIX); + ui->cbBinarySuffix->addItem(SDCC_BIN_SUFFIX); + ui->cbBinarySuffix->setCurrentText(pSet->executableSuffix()); + } else { + ui->txtExecutableSuffix->setText(pSet->executableSuffix()); + } +#else + ui->grpCompilationStages->setVisible(true); + ui->lbPreprocessingSuffix->setVisible(true); + ui->txtPreprocessingSuffix->setVisible(true); + ui->lbCompilingSuffix->setVisible(true); + ui->txtCompilationSuffix->setVisible(true); + ui->lbExecSuffix->setVisible(true); + ui->txtExecutableSuffix->setVisible(true); + ui->lbBinarySuffix->setVisible(false); + ui->cbBinarySuffix->setVisible(false); + ui->txtExecutableSuffix->setText(pSet->executableSuffix()); +#endif } void CompilerSetOptionWidget::doLoad() @@ -237,7 +270,15 @@ void CompilerSetOptionWidget::saveCurrentCompilerSet() } pSet->setPreprocessingSuffix(ui->txtPreprocessingSuffix->text()); pSet->setCompilationProperSuffix(ui->txtCompilationSuffix->text()); +#ifdef ENABLE_SDCC + if (pSet->compilerType()==CompilerType::SDCC) { + pSet->setExecutableSuffix(ui->cbBinarySuffix->currentText()); + } else { + pSet->setExecutableSuffix(ui->txtExecutableSuffix->text()); + } +#else pSet->setExecutableSuffix(ui->txtExecutableSuffix->text()); +#endif } QString CompilerSetOptionWidget::getBinDir() diff --git a/RedPandaIDE/settingsdialog/compilersetoptionwidget.ui b/RedPandaIDE/settingsdialog/compilersetoptionwidget.ui index ec2436d6..566b63cf 100644 --- a/RedPandaIDE/settingsdialog/compilersetoptionwidget.ui +++ b/RedPandaIDE/settingsdialog/compilersetoptionwidget.ui @@ -110,7 +110,7 @@ - 0 + 4 false @@ -431,14 +431,35 @@ Output - - + + + + Qt::Horizontal + + + + 40 + 20 + + + - - + + + + Compiling output suffix + + + + + + + Executable suffix + + - + Compilation Stages @@ -470,7 +491,17 @@ - + + + + + + + Preprocessing output suffix + + + + Qt::Vertical @@ -483,40 +514,19 @@ - - + + - - + + + + + + + + - Executable suffix - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Preprocessing output suffix - - - - - - - Compiling output suffix + Binary suffix diff --git a/RedPandaIDE/systemconsts.h b/RedPandaIDE/systemconsts.h index e80e88a7..fec5f9a1 100644 --- a/RedPandaIDE/systemconsts.h +++ b/RedPandaIDE/systemconsts.h @@ -38,6 +38,8 @@ #define LLDB_MI_PROGRAM "lldb-mi.exe" #define LLDB_SERVER_PROGRAM "lldb-server.exe" #define SDCC_PROGRAM "sdcc.exe" +#define PACKIHX_PROGRAM "packihx.exe" +#define MAKEBIN_PROGRAM "makebin.exe" #elif defined(Q_OS_LINUX) #define CONSOLE_PAUSER "consolepauser" #define ASSEMBLER "nasm" @@ -75,6 +77,8 @@ #define LLDB_MI_PROGRAM "lldb-mi" #define LLDB_SERVER_PROGRAM "lldb-server" #define SDCC_PROGRAM "sdcc" +#define PACKIHX_PROGRAM "packihx" +#define MAKEBIN_PROGRAM "makebin" #else #error "Only support windows, Linux and MacOS now!" #endif @@ -137,9 +141,14 @@ # define XMAKEFILE_NAME "xmake.lua" # define ALL_FILE_WILDCARD "*" #else -#error "Only support windows and linux now!" +#error "Only support windows, linux and macos now!" #endif +#define SDCC_IHX_SUFFIX "ihx" +#define SDCC_BIN_SUFFIX "bin" +#define SDCC_HEX_SUFFIX "hex" + + class SystemConsts { public: diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts index de589e7f..92503867 100644 --- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts +++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts @@ -463,6 +463,18 @@ An unknown error occurred. Erro desconhecido detectado. + + - Command: %1 %2 + + + + - Command: %1 %2 > "%3" + + + + Can't open file "%1" for write! + + CompilerAutolinkWidget @@ -779,6 +791,10 @@ Searching... + + Binary suffix + + CppRefacter @@ -7116,6 +7132,51 @@ Continuar a procura + + SDCCFileCompiler + + Compiling single file... + Compilando arquivo único... + + + - Filename: %1 + + + + - Compiler Set Name: %1 + + + + Can't find "%1". + + + + + The Compiler '%1' doesn't exists! + + + + Please check the "program" page of compiler settings. + + + + Processing %1 source file: + + + + - %1 Compiler: %2 + + + + - Command: %1 %2 + - Comando: %1 %2 + + + Can't delete the old executable file "%1". + + Impossível remover o antigo arquivo executável "%1". + + SearchDialog diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts index 1534a29d..f426410e 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts @@ -546,58 +546,73 @@ p, li { white-space: pre-wrap; } Clean before rebuild failed. 重编译前的清理准备工作失败! + + + - Command: %1 %2 + - 命令: %1 %2 + + - Command: %1 %2 > "%3" + - 命令: %1 %2 > "%3" + + + Compile Result: 编译结果: - + - Errors: %1 - 错误数: %1 - + - Warnings: %1 - 警告数: %1 - + - Output Filename: %1 - 输出文件名: %1 - + - Output Size: %1 - 输出文件大小: %1 - + - Compilation Time: %1 secs - 编译时间: %1 秒 - + [Error] [错误] - + [Warning] [警告] - + [Info] [信息] - + [Note] [说明] - + + Can't open file "%1" for write! + 无法写入文件“%1”。 + + + The compiler process for '%1' failed to start. 无法启动编译器进程'%1'。 @@ -606,27 +621,27 @@ p, li { white-space: pre-wrap; } 无法启动编译进程。 - + The compiler process crashed after starting successfully. 编译进程启动后崩溃。 - + The last waitFor...() function timed out. waitFor()函数等待超时。 - + An error occurred when attempting to write to the compiler process. 在向编译进程输入内容时出错。 - + An error occurred when attempting to read from the compiler process. 在从编译进程读取内容时出错。 - + An unknown error occurred. 发生了未知错误。 @@ -672,29 +687,29 @@ p, li { white-space: pre-wrap; } CompilerManager - - - - - + + + + + No compiler set 无编译器设置 - - - - - + + + + + No compiler set is configured. 没有配置编译器设置。 - - - - - + + + + + Can't start debugging. 无法启动调试器 @@ -711,12 +726,12 @@ p, li { white-space: pre-wrap; } 程序中的文字内容可能无法被正确处理和显示。 - + Can't find Console Pauser 找不到Console Pauser程序 - + Console Pauser "%1" doesn't exists! 找不到Console Pauser程序"%1"! @@ -842,6 +857,11 @@ p, li { white-space: pre-wrap; } Statically link libraries 用静态链接方式链接库文件 + + + Binary suffix + 二进制文件类型 + Syntax error for stack frame larger than 单个函数栈大小超过指定值时报错: @@ -875,17 +895,17 @@ p, li { white-space: pre-wrap; } 输出 - + Compilation Stages 编译阶段 - + Stop after the preprocessing stage 在完成预处理后停止编译 - + Stop after the compilation proper stage 在生成汇编代码后停止。 @@ -894,12 +914,12 @@ p, li { white-space: pre-wrap; } 在完成汇编后停止。 - + Link and generate the executable 链接得到可执行文件。 - + Preprocessing output suffix 预处理输出后缀 @@ -908,12 +928,12 @@ p, li { white-space: pre-wrap; } 编译输出后缀 - + Compiling output suffix 编译(汇编代码)输出后缀 - + Executable suffix 可执行文件后缀 @@ -989,12 +1009,12 @@ p, li { white-space: pre-wrap; } 选择性能分析器 - + Confirm 确认 - + Red Panda C++ will clear current compiler list and search for compilers in the following locations:<br /> '%1'<br /> '%2'<br />Are you really want to continue? Red Panda C++ will clear current compiler list and search for compilers in the following locations: '%1' @@ -1003,105 +1023,105 @@ Are you really want to continue? 小熊猫C++ 将会清除现有的编译器配置列表,然后在下列文件夹中搜索编译器:<br/> '%1'<br/> '%2'<br />你确定要继续吗? - + ANSI ANSI - + UTF-8 UTF-8 - + Red Panda C++ will clear current compiler list and search for compilers in the the PATH. <br />Are you really want to continue? 小熊猫C++ 将会清除现有的编译器配置列表,然后在PATH路径中搜索gcc编译器.<br />你确定要继续吗? - + Searching for compilers... 正在搜索编译器…… - + Abort 中止 - + Searching... 正在查找... - - + + Failed 失败 - - + + Can't find any compiler. 找不到编译器 - - + + Compiler Set Name 编译器配置名称 - + Name 名称 - + Compiler Set Folder 编译器所在文件夹 - + New name 新名称 - + Locate C Compiler 定位C编译器 - - - - - - + + + + + + Executable files (*.exe) 可执行文件 (*.exe) - + Locate C++ Compiler 定位C++编译器 - + Locate Make 定位make程序 - + Locate GDB 定位gdb程序 - + Locate GDB Server 定位gdb server程序 - + Locate windres 定位windres程序 @@ -1567,14 +1587,14 @@ Are you really want to continue? 十进制: %1 - + Print Document 打印文档 - - - + + + Ctrl+click for more info Ctrl+单击以获取更多信息 @@ -1583,27 +1603,27 @@ Are you really want to continue? 未找到符号'%1'! - + astyle not found 找不到astyle程序 - + Can't find astyle in "%1". 找不到astyle程序"%1". - + Break point condition 断点条件 - + Enter the condition of the breakpoint: 输入当前断点的生效条件: - + Readonly 只读 @@ -2946,65 +2966,65 @@ Are you really want to continue? FileCompiler - + Checking single file... 检查单个文件... - + Compiling single file... 编译单个文件... - + - Filename: %1 - 文件名: %1 - + - Compiler Set Name: %1 - 编译器配置: %1 - - + + Can't delete the old executable file "%1". 无法删除旧的可执行文件"%1". - + GNU Assembler GNU汇编 - + Can't find the compiler for file %1 Can't the compiler for file %1 找不到适合文件%1的编译器 - + The Compiler '%1' doesn't exists! 编译器程序"%1"不存在! - + Please check the "program" page of compiler settings. 请检查编译器设置中的“程序”页。 - + Processing %1 source file: 正在处理%1源程序文件: - + %1 Compiler: %2 %1编译器: %2 - + Command: %1 %2 命令: %1 %2 @@ -7982,18 +8002,17 @@ Are you really want to continue? 请检查编译器配置中的“程序”页。 - + Processing makefile: 正在处理makefile... - + - makefile processer: %1 - makefile处理器: %1 - - + - Command: %1 %2 - 命令: %1 %2 @@ -8778,7 +8797,7 @@ Are you really want to continue? - + Code Generation 代码生成 @@ -8806,12 +8825,12 @@ Are you really want to continue? 使用下列指针大小编译(-mx) - + Processor (-m) - + 处理器类型(-m) - + Language standard (-std) 语言标准(-std) @@ -8825,7 +8844,7 @@ Are you really want to continue? 生成调试信息(-g3) - + Would you like Red Panda C++ to search for compilers in PATH? 您同意小熊猫C++在PATH路径中寻找gcc编译器吗? @@ -8956,7 +8975,7 @@ Are you really want to continue? 只生成汇编代码(-S) - + Confirm 确认 @@ -8977,43 +8996,43 @@ Are you really want to continue? 如果仍然保留这些设置,可能会导致编译错误。<br /><br />请选择“是”,除非您清楚的知道选择“否”的后果, - - + + Compiler set not configuared. 未配置编译器设置。 - + Would you like Red Panda C++ to search for compilers in the following locations: <BR />'%1'<BR />'%2'? 您需要小熊猫C++在下列位置搜索编译器吗:<br />%1<br />%2 - + Binaries 二进制文件 - + Libraries 库文件 - + C Includes C包含文件 - + C++ Includes C++包含文件 - + Remove 删除 - + Do you really want to remove "%1"? 您确定要删除"%1"吗? @@ -9838,6 +9857,62 @@ Are you really want to continue? 继续查找 + + SDCCFileCompiler + + + Compiling single file... + 编译单个文件... + + + + - Filename: %1 + - 文件名: %1 + + + + - Compiler Set Name: %1 + - 编译器配置: %1 + + + + + Can't find "%1". + + 找不到文件"%1". + + + + The Compiler '%1' doesn't exists! + 找不到编译器'%1'. + + + + Please check the "program" page of compiler settings. + 请检查编译器设置页中的“程序”页。 + + + + Processing %1 source file: + 正在处理%1源程序文件: + + + + - %1 Compiler: %2 + - %1 编译器: %2 + + + + - Command: %1 %2 + - 命令: %1 %2 + + + + Can't delete the old executable file "%1". + + 无法删除旧的可执行文件"%1". + + SearchDialog diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts index c8b01b0d..6697fe05 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts @@ -372,6 +372,18 @@ An unknown error occurred. + + - Command: %1 %2 + + + + - Command: %1 %2 > "%3" + + + + Can't open file "%1" for write! + + CompilerAutolinkWidget @@ -668,6 +680,10 @@ Searching... + + Binary suffix + + CppRefacter @@ -6570,6 +6586,51 @@ + + SDCCFileCompiler + + Compiling single file... + + + + - Filename: %1 + + + + - Compiler Set Name: %1 + + + + Can't find "%1". + + + + + The Compiler '%1' doesn't exists! + + + + Please check the "program" page of compiler settings. + + + + Processing %1 source file: + + + + - %1 Compiler: %2 + + + + - Command: %1 %2 + + + + Can't delete the old executable file "%1". + + + + SearchDialog