use sdcc to create hex/bin files

This commit is contained in:
Roy Qu 2023-08-13 18:53:48 +08:00
parent 707358817c
commit bfc1b03ae3
14 changed files with 460 additions and 167 deletions

View File

@ -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 {

View File

@ -66,7 +66,12 @@ void Compiler::run()
timer.start();
runCommand(mCompiler, mArguments, mDirectory, pipedText());
for(int i=0;i<mExtraArgumentsList.count();i++) {
runCommand(mExtraCompilersList[i],mExtraArgumentsList[i],mDirectory, pipedText());
if (mExtraOutputFilesList[i].isEmpty()) {
log(tr(" - Command: %1 %2").arg(extractFileName(mExtraCompilersList[i]),mExtraArgumentsList[i]));
} else {
log(tr(" - Command: %1 %2 > \"%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<QString>
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<int, QProcess::ExitStatus>::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

View File

@ -84,7 +84,7 @@ protected:
QSet<QString>& 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;

View File

@ -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);

View File

@ -19,6 +19,7 @@
#include "../mainwindow.h"
#include "compilermanager.h"
#include "qsynedit/syntaxer/asm.h"
#include "../systemconsts.h"
#include <QFile>
#include <QFileInfo>
@ -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)

View File

@ -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<mExtraCompilersList.count();i++) {
log(tr("- Command: %1 %2").arg(extractFileName(mExtraCompilersList[i])).arg(mExtraArgumentsList[i]));
}
log("");
return true;

View File

@ -1715,7 +1715,7 @@ Settings::CompilerSet::CompilerSet(const QString& compilerFolder, const QString&
#ifdef ENABLE_SDCC
if (mCompilerType == CompilerType::SDCC) {
mExecutableSuffix = "ihx";
mExecutableSuffix = SDCC_HEX_SUFFIX;
}
#endif
mFullLoaded = true;
@ -2679,7 +2679,7 @@ void Settings::CompilerSet::setUserInput()
}
QString Settings::CompilerSet::findProgramInBinDirs(const QString name)
QString Settings::CompilerSet::findProgramInBinDirs(const QString name) const
{
for (const QString& dir : mBinDirs) {
QFileInfo f(includeTrailingPathDelimiter(dir) + name);

View File

@ -1346,6 +1346,7 @@ public:
QString getCompileOptionValue(const QString& key) const;
int mainVersion() const;
QString findProgramInBinDirs(const QString name) const;
bool canCompileC() const;
bool canCompileCPP() const;
@ -1452,7 +1453,6 @@ public:
void setExecutables();
void setUserInput();
QString findProgramInBinDirs(const QString name);
QByteArray getCompilerOutput(const QString& binDir, const QString& binFile,
const QStringList& arguments);

View File

@ -23,6 +23,7 @@
#include <QProgressDialog>
#include "../utils.h"
#include "../iconsmanager.h"
#include "../systemconsts.h"
#include <qt_utils/charsetinfo.h>
#include <QDebug>
#include <QFileDialog>
@ -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()

View File

@ -110,7 +110,7 @@
<item>
<widget class="QTabWidget" name="settingTabs">
<property name="currentIndex">
<number>0</number>
<number>4</number>
</property>
<property name="movable">
<bool>false</bool>
@ -431,14 +431,35 @@
<string>Output</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="4" column="1">
<widget class="QLineEdit" name="txtExecutableSuffix"/>
<item row="1" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="txtCompilationSuffix"/>
<item row="2" column="0">
<widget class="QLabel" name="lbCompilingSuffix">
<property name="text">
<string>Compiling output suffix</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbExecSuffix">
<property name="text">
<string>Executable suffix</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QGroupBox" name="groupBox_2">
<widget class="QGroupBox" name="grpCompilationStages">
<property name="title">
<string>Compilation Stages</string>
</property>
@ -470,7 +491,17 @@
</layout>
</widget>
</item>
<item row="5" column="0">
<item row="1" column="1">
<widget class="QLineEdit" name="txtPreprocessingSuffix"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbPreprocessingSuffix">
<property name="text">
<string>Preprocessing output suffix</string>
</property>
</widget>
</item>
<item row="6" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -483,40 +514,19 @@
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="txtPreprocessingSuffix"/>
<item row="5" column="1">
<widget class="QComboBox" name="cbBinarySuffix"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label">
<item row="4" column="1">
<widget class="QLineEdit" name="txtExecutableSuffix"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="txtCompilationSuffix"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="lbBinarySuffix">
<property name="text">
<string>Executable suffix</string>
</property>
</widget>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Preprocessing output suffix</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Compiling output suffix</string>
<string>Binary suffix</string>
</property>
</widget>
</item>

View File

@ -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:

View File

@ -463,6 +463,18 @@
<source>An unknown error occurred.</source>
<translation>Erro desconhecido detectado.</translation>
</message>
<message>
<source> - Command: %1 %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> - Command: %1 %2 &gt; &quot;%3&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can&apos;t open file &quot;%1&quot; for write!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CompilerAutolinkWidget</name>
@ -779,6 +791,10 @@
<source>Searching...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary suffix</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CppRefacter</name>
@ -7116,6 +7132,51 @@
<translation type="obsolete">Continuar a procura</translation>
</message>
</context>
<context>
<name>SDCCFileCompiler</name>
<message>
<source>Compiling single file...</source>
<translation type="unfinished">Compilando arquivo único...</translation>
</message>
<message>
<source>- Filename: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- Compiler Set Name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can&apos;t find &quot;%1&quot;.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Compiler &apos;%1&apos; doesn&apos;t exists!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Please check the &quot;program&quot; page of compiler settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Processing %1 source file:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- %1 Compiler: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- Command: %1 %2</source>
<translation type="unfinished">- Comando: %1 %2</translation>
</message>
<message>
<source>Can&apos;t delete the old executable file &quot;%1&quot;.
</source>
<translation type="unfinished">Impossível remover o antigo arquivo executável &quot;%1&quot;.</translation>
</message>
</context>
<context>
<name>SearchDialog</name>
<message>

View File

@ -546,58 +546,73 @@ p, li { white-space: pre-wrap; }
<source>Clean before rebuild failed.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="70"/>
<source> - Command: %1 %2</source>
<translation>- : %1 %2</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="72"/>
<source> - Command: %1 %2 &gt; &quot;%3&quot;</source>
<translation>- : %1 %2 &gt; &quot;%3&quot;</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="77"/>
<source>Compile Result:</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="74"/>
<location filename="../compiler/compiler.cpp" line="79"/>
<source>- Errors: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="75"/>
<location filename="../compiler/compiler.cpp" line="80"/>
<source>- Warnings: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="77"/>
<location filename="../compiler/compiler.cpp" line="82"/>
<source>- Output Filename: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="79"/>
<location filename="../compiler/compiler.cpp" line="84"/>
<source>- Output Size: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="81"/>
<location filename="../compiler/compiler.cpp" line="86"/>
<source>- Compilation Time: %1 secs</source>
<translation>- : %1 </translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="178"/>
<location filename="../compiler/compiler.cpp" line="183"/>
<source>[Error] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="182"/>
<location filename="../compiler/compiler.cpp" line="187"/>
<source>[Warning] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="186"/>
<location filename="../compiler/compiler.cpp" line="191"/>
<source>[Info] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="190"/>
<location filename="../compiler/compiler.cpp" line="195"/>
<source>[Note] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="722"/>
<location filename="../compiler/compiler.cpp" line="685"/>
<source>Can&apos;t open file &quot;%1&quot; for write!</source>
<translation>%1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="737"/>
<source>The compiler process for &apos;%1&apos; failed to start.</source>
<translation>&apos;%1&apos;</translation>
</message>
@ -606,27 +621,27 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="726"/>
<location filename="../compiler/compiler.cpp" line="741"/>
<source>The compiler process crashed after starting successfully.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="729"/>
<location filename="../compiler/compiler.cpp" line="744"/>
<source>The last waitFor...() function timed out.</source>
<translation>waitFor()</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="732"/>
<location filename="../compiler/compiler.cpp" line="747"/>
<source>An error occurred when attempting to write to the compiler process.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="735"/>
<location filename="../compiler/compiler.cpp" line="750"/>
<source>An error occurred when attempting to read from the compiler process.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="738"/>
<location filename="../compiler/compiler.cpp" line="753"/>
<source>An unknown error occurred.</source>
<translation></translation>
</message>
@ -672,29 +687,29 @@ p, li { white-space: pre-wrap; }
<context>
<name>CompilerManager</name>
<message>
<location filename="../compiler/compilermanager.cpp" line="78"/>
<location filename="../compiler/compilermanager.cpp" line="109"/>
<location filename="../compiler/compilermanager.cpp" line="141"/>
<location filename="../compiler/compilermanager.cpp" line="175"/>
<location filename="../compiler/compilermanager.cpp" line="194"/>
<location filename="../compiler/compilermanager.cpp" line="81"/>
<location filename="../compiler/compilermanager.cpp" line="117"/>
<location filename="../compiler/compilermanager.cpp" line="149"/>
<location filename="../compiler/compilermanager.cpp" line="183"/>
<location filename="../compiler/compilermanager.cpp" line="202"/>
<source>No compiler set</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compilermanager.cpp" line="79"/>
<location filename="../compiler/compilermanager.cpp" line="110"/>
<location filename="../compiler/compilermanager.cpp" line="142"/>
<location filename="../compiler/compilermanager.cpp" line="176"/>
<location filename="../compiler/compilermanager.cpp" line="195"/>
<location filename="../compiler/compilermanager.cpp" line="82"/>
<location filename="../compiler/compilermanager.cpp" line="118"/>
<location filename="../compiler/compilermanager.cpp" line="150"/>
<location filename="../compiler/compilermanager.cpp" line="184"/>
<location filename="../compiler/compilermanager.cpp" line="203"/>
<source>No compiler set is configured.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compilermanager.cpp" line="79"/>
<location filename="../compiler/compilermanager.cpp" line="110"/>
<location filename="../compiler/compilermanager.cpp" line="142"/>
<location filename="../compiler/compilermanager.cpp" line="176"/>
<location filename="../compiler/compilermanager.cpp" line="195"/>
<location filename="../compiler/compilermanager.cpp" line="82"/>
<location filename="../compiler/compilermanager.cpp" line="118"/>
<location filename="../compiler/compilermanager.cpp" line="150"/>
<location filename="../compiler/compilermanager.cpp" line="184"/>
<location filename="../compiler/compilermanager.cpp" line="203"/>
<source>Can&apos;t start debugging.</source>
<translation></translation>
</message>
@ -711,12 +726,12 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../compiler/compilermanager.cpp" line="266"/>
<location filename="../compiler/compilermanager.cpp" line="274"/>
<source>Can&apos;t find Console Pauser</source>
<translation>Console Pauser程序</translation>
</message>
<message>
<location filename="../compiler/compilermanager.cpp" line="267"/>
<location filename="../compiler/compilermanager.cpp" line="275"/>
<source>Console Pauser &quot;%1&quot; doesn&apos;t exists!</source>
<translation>Console Pauser程序&quot;%1&quot;</translation>
</message>
@ -842,6 +857,11 @@ p, li { white-space: pre-wrap; }
<source>Statically link libraries</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="529"/>
<source>Binary suffix</source>
<translation></translation>
</message>
<message>
<source>Syntax error for stack frame larger than</source>
<translation type="vanished"></translation>
@ -875,17 +895,17 @@ p, li { white-space: pre-wrap; }
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="443"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="464"/>
<source>Compilation Stages</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="449"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="470"/>
<source>Stop after the preprocessing stage</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="456"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="477"/>
<source>Stop after the compilation proper stage</source>
<translation></translation>
</message>
@ -894,12 +914,12 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="463"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="484"/>
<source>Link and generate the executable </source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="512"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="500"/>
<source>Preprocessing output suffix</source>
<translation></translation>
</message>
@ -908,12 +928,12 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="519"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="450"/>
<source>Compiling output suffix</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="492"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="457"/>
<source>Executable suffix</source>
<translation></translation>
</message>
@ -989,12 +1009,12 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="264"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="305"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="256"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="297"/>
<source>Red Panda C++ will clear current compiler list and search for compilers in the following locations:&lt;br /&gt; &apos;%1&apos;&lt;br /&gt; &apos;%2&apos;&lt;br /&gt;Are you really want to continue?</source>
<oldsource>Red Panda C++ will clear current compiler list and search for compilers in the following locations:
&apos;%1&apos;
@ -1003,105 +1023,105 @@ Are you really want to continue?</oldsource>
<translation>C++ :&lt;br/&gt; &apos;%1&apos;&lt;br/&gt; &apos;%2&apos;&lt;br /&gt;</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="67"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="68"/>
<source>ANSI</source>
<translation>ANSI</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="68"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="69"/>
<source>UTF-8</source>
<translation>UTF-8</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="261"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="302"/>
<source>Red Panda C++ will clear current compiler list and search for compilers in the the PATH. &lt;br /&gt;Are you really want to continue?</source>
<translation>C++ PATH路径中搜索gcc编译器.&lt;br /&gt;</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="268"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="309"/>
<source>Searching for compilers...</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="269"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="310"/>
<source>Abort</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="276"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="317"/>
<source>Searching...</source>
<translation>...</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="285"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="309"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="326"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="350"/>
<source>Failed</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="285"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="309"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="326"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="350"/>
<source>Can&apos;t find any compiler.</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="291"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="318"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="332"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="359"/>
<source>Compiler Set Name</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="291"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="332"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="300"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="341"/>
<source>Compiler Set Folder</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="318"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="359"/>
<source>New name</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="385"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="426"/>
<source>Locate C Compiler</source>
<translation>C编译器</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="387"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="399"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="411"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="423"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="435"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="447"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="428"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="440"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="452"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="464"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="476"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="488"/>
<source>Executable files (*.exe)</source>
<translation> (*.exe)</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="397"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="438"/>
<source>Locate C++ Compiler</source>
<translation>C++</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="409"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="450"/>
<source>Locate Make</source>
<translation>make程序</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="421"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="462"/>
<source>Locate GDB</source>
<translation>gdb程序</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="433"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="474"/>
<source>Locate GDB Server</source>
<translation>gdb server程序</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="445"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="486"/>
<source>Locate windres</source>
<translation>windres程序</translation>
</message>
@ -1567,14 +1587,14 @@ Are you really want to continue?</oldsource>
<translation>: %1</translation>
</message>
<message>
<location filename="../editor.cpp" line="3256"/>
<location filename="../editor.cpp" line="3258"/>
<source>Print Document</source>
<translation></translation>
</message>
<message>
<location filename="../editor.cpp" line="4025"/>
<location filename="../editor.cpp" line="4050"/>
<location filename="../editor.cpp" line="4097"/>
<location filename="../editor.cpp" line="4029"/>
<location filename="../editor.cpp" line="4054"/>
<location filename="../editor.cpp" line="4101"/>
<source>Ctrl+click for more info</source>
<translation>Ctrl+</translation>
</message>
@ -1583,27 +1603,27 @@ Are you really want to continue?</oldsource>
<translation type="vanished">&apos;%1&apos;!</translation>
</message>
<message>
<location filename="../editor.cpp" line="4966"/>
<location filename="../editor.cpp" line="4970"/>
<source>astyle not found</source>
<translation>astyle程序</translation>
</message>
<message>
<location filename="../editor.cpp" line="4967"/>
<location filename="../editor.cpp" line="4971"/>
<source>Can&apos;t find astyle in &quot;%1&quot;.</source>
<translation>astyle程序&quot;%1&quot;.</translation>
</message>
<message>
<location filename="../editor.cpp" line="5127"/>
<location filename="../editor.cpp" line="5131"/>
<source>Break point condition</source>
<translation></translation>
</message>
<message>
<location filename="../editor.cpp" line="5128"/>
<location filename="../editor.cpp" line="5132"/>
<source>Enter the condition of the breakpoint:</source>
<translation>:</translation>
</message>
<message>
<location filename="../editor.cpp" line="5381"/>
<location filename="../editor.cpp" line="5387"/>
<source>Readonly</source>
<translation></translation>
</message>
@ -2946,65 +2966,65 @@ Are you really want to continue?</oldsource>
<context>
<name>FileCompiler</name>
<message>
<location filename="../compiler/filecompiler.cpp" line="60"/>
<location filename="../compiler/filecompiler.cpp" line="61"/>
<source>Checking single file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="62"/>
<location filename="../compiler/filecompiler.cpp" line="63"/>
<source>Compiling single file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="65"/>
<location filename="../compiler/filecompiler.cpp" line="66"/>
<source>- Filename: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="66"/>
<location filename="../compiler/filecompiler.cpp" line="67"/>
<source>- Compiler Set Name: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="102"/>
<location filename="../compiler/filecompiler.cpp" line="195"/>
<location filename="../compiler/filecompiler.cpp" line="107"/>
<location filename="../compiler/filecompiler.cpp" line="200"/>
<source>Can&apos;t delete the old executable file &quot;%1&quot;.
</source>
<translation>&quot;%1&quot;.</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="115"/>
<location filename="../compiler/filecompiler.cpp" line="120"/>
<source>GNU Assembler</source>
<translation>GNU汇编</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="133"/>
<location filename="../compiler/filecompiler.cpp" line="138"/>
<source>Can&apos;t find the compiler for file %1</source>
<oldsource>Can&apos;t the compiler for file %1</oldsource>
<translation>%1</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="174"/>
<location filename="../compiler/filecompiler.cpp" line="179"/>
<source>The Compiler &apos;%1&apos; doesn&apos;t exists!</source>
<translation>&quot;%1&quot;</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="176"/>
<location filename="../compiler/filecompiler.cpp" line="181"/>
<source>Please check the &quot;program&quot; page of compiler settings.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="179"/>
<location filename="../compiler/filecompiler.cpp" line="184"/>
<source>Processing %1 source file:</source>
<translation>%1:</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="181"/>
<location filename="../compiler/filecompiler.cpp" line="186"/>
<source>%1 Compiler: %2</source>
<translation>%1: %2</translation>
</message>
<message>
<location filename="../compiler/filecompiler.cpp" line="182"/>
<location filename="../compiler/filecompiler.cpp" line="187"/>
<source>Command: %1 %2</source>
<translation>: %1 %2</translation>
</message>
@ -7982,18 +8002,17 @@ Are you really want to continue?</oldsource>
<translation></translation>
</message>
<message>
<location filename="../compiler/projectcompiler.cpp" line="624"/>
<location filename="../compiler/projectcompiler.cpp" line="625"/>
<source>Processing makefile:</source>
<translation>makefile...</translation>
</message>
<message>
<location filename="../compiler/projectcompiler.cpp" line="626"/>
<location filename="../compiler/projectcompiler.cpp" line="627"/>
<source>- makefile processer: %1</source>
<translation>- makefile处理器: %1</translation>
</message>
<message>
<location filename="../compiler/projectcompiler.cpp" line="627"/>
<location filename="../compiler/projectcompiler.cpp" line="629"/>
<location filename="../compiler/projectcompiler.cpp" line="628"/>
<source>- Command: %1 %2</source>
<translation>- : %1 %2</translation>
</message>
@ -8778,7 +8797,7 @@ Are you really want to continue?</oldsource>
</message>
<message>
<location filename="../compiler/compilerinfo.cpp" line="64"/>
<location filename="../compiler/compilerinfo.cpp" line="406"/>
<location filename="../compiler/compilerinfo.cpp" line="409"/>
<source>Code Generation</source>
<translation></translation>
</message>
@ -8806,12 +8825,12 @@ Are you really want to continue?</oldsource>
<translation>使(-mx)</translation>
</message>
<message>
<location filename="../compiler/compilerinfo.cpp" line="427"/>
<location filename="../compiler/compilerinfo.cpp" line="430"/>
<source>Processor (-m)</source>
<translation type="unfinished"></translation>
<translation>(-m)</translation>
</message>
<message>
<location filename="../compiler/compilerinfo.cpp" line="441"/>
<location filename="../compiler/compilerinfo.cpp" line="444"/>
<source>Language standard (-std)</source>
<translation>(-std)</translation>
</message>
@ -8825,7 +8844,7 @@ Are you really want to continue?</oldsource>
<translation>(-g3)</translation>
</message>
<message>
<location filename="../settings.cpp" line="3132"/>
<location filename="../settings.cpp" line="3162"/>
<source>Would you like Red Panda C++ to search for compilers in PATH?</source>
<translation>C++PATH路径中寻找gcc编译器吗</translation>
</message>
@ -8956,7 +8975,7 @@ Are you really want to continue?</oldsource>
<translation type="vanished">(-S)</translation>
</message>
<message>
<location filename="../settings.cpp" line="3134"/>
<location filename="../settings.cpp" line="3164"/>
<source>Confirm</source>
<translation></translation>
</message>
@ -8977,43 +8996,43 @@ Are you really want to continue?</oldsource>
<translation type="vanished">&lt;br /&gt;&lt;br /&gt;</translation>
</message>
<message>
<location filename="../settings.cpp" line="3124"/>
<location filename="../settings.cpp" line="3130"/>
<location filename="../settings.cpp" line="3154"/>
<location filename="../settings.cpp" line="3160"/>
<source>Compiler set not configuared.</source>
<translation></translation>
</message>
<message>
<location filename="../settings.cpp" line="3126"/>
<location filename="../settings.cpp" line="3156"/>
<source>Would you like Red Panda C++ to search for compilers in the following locations: &lt;BR /&gt;&apos;%1&apos;&lt;BR /&gt;&apos;%2&apos;? </source>
<translation>C++&lt;br /&gt;%1&lt;br /&gt;%2</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="38"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="39"/>
<source>Binaries</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="40"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="41"/>
<source>Libraries</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="42"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="43"/>
<source>C Includes</source>
<translation>C包含文件</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="44"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="45"/>
<source>C++ Includes</source>
<translation>C++</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="331"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="372"/>
<source>Remove</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="332"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="373"/>
<source>Do you really want to remove &quot;%1&quot;?</source>
<translation>&quot;%1&quot;</translation>
</message>
@ -9838,6 +9857,62 @@ Are you really want to continue?</oldsource>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>SDCCFileCompiler</name>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="41"/>
<source>Compiling single file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="43"/>
<source>- Filename: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="44"/>
<source>- Compiler Set Name: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="73"/>
<location filename="../compiler/sdccfilecompiler.cpp" line="84"/>
<source>Can&apos;t find &quot;%1&quot;.
</source>
<translation>&quot;%1&quot;.</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="102"/>
<source>The Compiler &apos;%1&apos; doesn&apos;t exists!</source>
<translation>&apos;%1&apos;.</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="104"/>
<source>Please check the &quot;program&quot; page of compiler settings.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="107"/>
<source>Processing %1 source file:</source>
<translation>%1:</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="109"/>
<source>- %1 Compiler: %2</source>
<translation>- %1 : %2</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="110"/>
<source>- Command: %1 %2</source>
<translation>- : %1 %2</translation>
</message>
<message>
<location filename="../compiler/sdccfilecompiler.cpp" line="123"/>
<source>Can&apos;t delete the old executable file &quot;%1&quot;.
</source>
<translation>&quot;%1&quot;.</translation>
</message>
</context>
<context>
<name>SearchDialog</name>
<message>

View File

@ -372,6 +372,18 @@
<source>An unknown error occurred.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> - Command: %1 %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> - Command: %1 %2 &gt; &quot;%3&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can&apos;t open file &quot;%1&quot; for write!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CompilerAutolinkWidget</name>
@ -668,6 +680,10 @@
<source>Searching...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary suffix</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CppRefacter</name>
@ -6570,6 +6586,51 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SDCCFileCompiler</name>
<message>
<source>Compiling single file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- Filename: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- Compiler Set Name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can&apos;t find &quot;%1&quot;.
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Compiler &apos;%1&apos; doesn&apos;t exists!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Please check the &quot;program&quot; page of compiler settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Processing %1 source file:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- %1 Compiler: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>- Command: %1 %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can&apos;t delete the old executable file &quot;%1&quot;.
</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SearchDialog</name>
<message>