- enhancement: Options in compiler set settings, to generate syntax error for large stack objects.

This commit is contained in:
Roy Qu 2023-03-13 21:57:15 +08:00
parent 16e45f1b9c
commit 436a047821
10 changed files with 295 additions and 141 deletions

View File

@ -8,6 +8,7 @@ Red Panda C++ Version 2.18
- enhancement: Warn user and stop compile if project has missing files.
- enhancement: Warn user when exit and save settings failed.
- change: Remove compiler set options that's rarely used.
- enhancement: Options in compiler set settings, to generate syntax error for large stack objects.
Red Panda C++ Version 2.17

View File

@ -19,6 +19,7 @@
#include "compilermanager.h"
#include "../systemconsts.h"
#include <cmath>
#include <QFileInfo>
#include <QProcess>
#include <QString>
@ -422,6 +423,11 @@ QString Compiler::getCCompileArguments(bool checkSyntax)
foreach(const QString& param, params)
result += " "+ parseMacros(param);
}
} else {
if (compilerSet()->maxObjectSize()>0 && compilerSet()->warnLargeObject()) {
long long size = std::ceil(compilerSet()->maxObjectSize()*1024*1024);
result += QString(" -Werror=larger-than-%1").arg(size);
}
}
return result;
}
@ -462,6 +468,11 @@ QString Compiler::getCppCompileArguments(bool checkSyntax)
foreach(const QString& param, params)
result += " "+ parseMacros(param);
}
} else {
if (compilerSet()->maxObjectSize()>0 && compilerSet()->warnLargeObject()) {
long long size = std::ceil(compilerSet()->maxObjectSize()*1024*1024);
result += QString(" -Werror=larger-than-%1").arg(size);
}
}
return result;
}
@ -589,8 +600,10 @@ QString Compiler::getLibraryArguments(FileType fileType)
}
if (mProject->options().staticLink)
result += " -static";
} else if (compilerSet()->staticLink()) {
result += " -static";
} else {
if (compilerSet()->staticLink()) {
result += " -static";
}
}
return result;
}

View File

@ -74,7 +74,7 @@ bool FileCompiler::prepareForCompile()
mArguments+=" -E";
break;
case Settings::CompilerSet::CompilationStage::CompilationProperOnly:
mOutputFile=changeFileExt(mFilename,compilerSet()->compilationProperSuffix());
mOutputFile=changeFileExt(mFilename,compilerSet()->warnBigObject());
mArguments+=" -S -fverbose-asm";
break;
case Settings::CompilerSet::CompilationStage::AssemblingOnly:

View File

@ -1664,30 +1664,34 @@ void Settings::Editor::setTabToSpaces(bool tabToSpaces)
}
Settings::CompilerSet::CompilerSet():
mFullLoaded(false),
mCompilerType(CompilerType::Unknown),
mAutoAddCharsetParams(false),
mExecCharset(ENCODING_SYSTEM_DEFAULT),
mStaticLink(false),
mPreprocessingSuffix(DEFAULT_PREPROCESSING_SUFFIX),
mCompilationProperSuffix(DEFAULT_COMPILATION_SUFFIX),
mAssemblingSuffix(DEFAULT_ASSEMBLING_SUFFIX),
mExecutableSuffix(DEFAULT_EXECUTABLE_SUFFIX),
mCompilationStage(Settings::CompilerSet::CompilationStage::GenerateExecutable)
mFullLoaded{false},
mCompilerType{CompilerType::Unknown},
mAutoAddCharsetParams{false},
mExecCharset{ENCODING_SYSTEM_DEFAULT},
mStaticLink{false},
mMaxObjectSize{0},
mWarnLargeObject{false},
mPreprocessingSuffix{DEFAULT_PREPROCESSING_SUFFIX},
mCompilationProperSuffix{DEFAULT_COMPILATION_SUFFIX},
mAssemblingSuffix{DEFAULT_ASSEMBLING_SUFFIX},
mExecutableSuffix{DEFAULT_EXECUTABLE_SUFFIX},
mCompilationStage{Settings::CompilerSet::CompilationStage::GenerateExecutable}
{
}
Settings::CompilerSet::CompilerSet(const QString& compilerFolder, const QString& c_prog):
mAutoAddCharsetParams(true),
mExecCharset(ENCODING_SYSTEM_DEFAULT),
mStaticLink(true),
mPreprocessingSuffix(DEFAULT_PREPROCESSING_SUFFIX),
mCompilationProperSuffix(DEFAULT_COMPILATION_SUFFIX),
mAssemblingSuffix(DEFAULT_ASSEMBLING_SUFFIX),
mExecutableSuffix(DEFAULT_EXECUTABLE_SUFFIX),
mCompilationStage(Settings::CompilerSet::CompilationStage::GenerateExecutable)
mAutoAddCharsetParams{true},
mExecCharset{ENCODING_SYSTEM_DEFAULT},
mStaticLink{true},
mMaxObjectSize{0},
mWarnLargeObject{false},
mPreprocessingSuffix{DEFAULT_PREPROCESSING_SUFFIX},
mCompilationProperSuffix{DEFAULT_COMPILATION_SUFFIX},
mAssemblingSuffix{DEFAULT_ASSEMBLING_SUFFIX},
mExecutableSuffix{DEFAULT_EXECUTABLE_SUFFIX},
mCompilationStage{Settings::CompilerSet::CompilationStage::GenerateExecutable}
{
QDir dir(compilerFolder);
if (dir.exists(c_prog)) {
@ -1708,42 +1712,45 @@ Settings::CompilerSet::CompilerSet(const QString& compilerFolder, const QString&
}
Settings::CompilerSet::CompilerSet(const Settings::CompilerSet &set):
mFullLoaded(set.mFullLoaded),
mCCompiler(set.mCCompiler),
mCppCompiler(set.mCppCompiler),
mMake(set.mMake),
mDebugger(set.mDebugger),
mResourceCompiler(set.mResourceCompiler),
mDebugServer(set.mDebugServer),
mFullLoaded{set.mFullLoaded},
mCCompiler{set.mCCompiler},
mCppCompiler{set.mCppCompiler},
mMake{set.mMake},
mDebugger{set.mDebugger},
mResourceCompiler{set.mResourceCompiler},
mDebugServer{set.mDebugServer},
mBinDirs(set.mBinDirs),
mCIncludeDirs(set.mCIncludeDirs),
mCppIncludeDirs(set.mCppIncludeDirs),
mLibDirs(set.mLibDirs),
mDefaultLibDirs(set.mDefaultLibDirs),
mDefaultCIncludeDirs(set.mDefaultCIncludeDirs),
mDefaultCppIncludeDirs(set.mDefaultCppIncludeDirs),
mBinDirs{set.mBinDirs},
mCIncludeDirs{set.mCIncludeDirs},
mCppIncludeDirs{set.mCppIncludeDirs},
mLibDirs{set.mLibDirs},
mDefaultLibDirs{set.mDefaultLibDirs},
mDefaultCIncludeDirs{set.mDefaultCIncludeDirs},
mDefaultCppIncludeDirs{set.mDefaultCppIncludeDirs},
mDumpMachine(set.mDumpMachine),
mVersion(set.mVersion),
mType(set.mType),
mName(set.mName),
mTarget(set.mTarget),
mCompilerType(set.mCompilerType),
mDumpMachine{set.mDumpMachine},
mVersion{set.mVersion},
mType{set.mType},
mName{set.mName},
mTarget{set.mTarget},
mCompilerType{set.mCompilerType},
mUseCustomCompileParams(set.mUseCustomCompileParams),
mUseCustomLinkParams(set.mUseCustomLinkParams),
mCustomCompileParams(set.mCustomCompileParams),
mCustomLinkParams(set.mCustomLinkParams),
mAutoAddCharsetParams(set.mAutoAddCharsetParams),
mExecCharset(set.mExecCharset),
mStaticLink(set.mStaticLink),
mPreprocessingSuffix(set.mPreprocessingSuffix),
mCompilationProperSuffix(set.mCompilationProperSuffix),
mAssemblingSuffix(set.mAssemblingSuffix),
mExecutableSuffix(set.mExecutableSuffix),
mCompilationStage(set.mCompilationStage),
mCompileOptions(set.mCompileOptions)
mUseCustomCompileParams{set.mUseCustomCompileParams},
mUseCustomLinkParams{set.mUseCustomLinkParams},
mCustomCompileParams{set.mCustomCompileParams},
mCustomLinkParams{set.mCustomLinkParams},
mAutoAddCharsetParams{set.mAutoAddCharsetParams},
mExecCharset{set.mExecCharset},
mStaticLink{set.mStaticLink},
mMaxObjectSize{set.mMaxObjectSize},
mWarnLargeObject{set.mWarnLargeObject},
mPreprocessingSuffix{set.mPreprocessingSuffix},
mCompilationProperSuffix{set.mCompilationProperSuffix},
mAssemblingSuffix{set.mAssemblingSuffix},
mExecutableSuffix{set.mExecutableSuffix},
mCompilationStage{set.mCompilationStage},
mCompileOptions{set.mCompileOptions}
{
}
@ -2562,6 +2569,26 @@ QByteArray Settings::CompilerSet::getCompilerOutput(const QString &binDir, const
return result.trimmed();
}
bool Settings::CompilerSet::warnLargeObject() const
{
return mWarnLargeObject;
}
void Settings::CompilerSet::setWarnLargeObject(bool newWarnLargeObject)
{
mWarnLargeObject = newWarnLargeObject;
}
double Settings::CompilerSet::maxObjectSize() const
{
return mMaxObjectSize;
}
void Settings::CompilerSet::setMaxObjectSize(double maxObjectSize)
{
mMaxObjectSize = maxObjectSize;
}
Settings::CompilerSet::CompilationStage Settings::CompilerSet::compilationStage() const
{
return mCompilationStage;
@ -2583,7 +2610,7 @@ QString Settings::CompilerSet::getOutputFilename(const QString &sourceFilename,
case Settings::CompilerSet::CompilationStage::PreprocessingOnly:
return changeFileExt(sourceFilename, preprocessingSuffix());
case Settings::CompilerSet::CompilationStage::CompilationProperOnly:
return changeFileExt(sourceFilename, compilationProperSuffix());
return changeFileExt(sourceFilename, warnBigObject());
case Settings::CompilerSet::CompilationStage::AssemblingOnly:
return changeFileExt(sourceFilename, assemblingSuffix());
case Settings::CompilerSet::CompilationStage::GenerateExecutable:
@ -2612,7 +2639,7 @@ void Settings::CompilerSet::setAssemblingSuffix(const QString &newAssemblingSuff
mAssemblingSuffix = newAssemblingSuffix;
}
const QString &Settings::CompilerSet::compilationProperSuffix() const
const QString &Settings::CompilerSet::warnBigObject() const
{
return mCompilationProperSuffix;
}
@ -2731,6 +2758,8 @@ static void setReleaseOptions(Settings::PCompilerSet pSet) {
pSet->setCompileOption(LINK_CMD_OPT_STRIP_EXE, COMPILER_OPTION_ON);
pSet->setCompileOption(CC_CMD_OPT_USE_PIPE, COMPILER_OPTION_ON);
pSet->setStaticLink(true);
pSet->setMaxObjectSize(2); //default stack size of gcc is 2MB
pSet->setWarnLargeObject(false);
}
static void setDebugOptions(Settings::PCompilerSet pSet, bool enableAsan = false) {
@ -2746,6 +2775,9 @@ static void setDebugOptions(Settings::PCompilerSet pSet, bool enableAsan = false
pSet->setUseCustomLinkParams(true);
}
pSet->setStaticLink(false);
pSet->setMaxObjectSize(2); //default stack size of gcc is 2MB
pSet->setWarnLargeObject(true);
}
bool Settings::CompilerSets::addSets(const QString &folder, const QString& c_prog) {
@ -3087,9 +3119,11 @@ void Settings::CompilerSets::saveSet(int index)
mSettings->mSettings.setValue("AddCharset", pSet->autoAddCharsetParams());
mSettings->mSettings.setValue("StaticLink", pSet->staticLink());
mSettings->mSettings.setValue("ExecCharset", pSet->execCharset());
mSettings->mSettings.setValue("WarnLargeObject",pSet->warnLargeObject());
mSettings->mSettings.setValue("MaxObjectSize",pSet->maxObjectSize());
mSettings->mSettings.setValue("preprocessingSuffix", pSet->preprocessingSuffix());
mSettings->mSettings.setValue("compilationProperSuffix", pSet->compilationProperSuffix());
mSettings->mSettings.setValue("compilationProperSuffix", pSet->warnBigObject());
mSettings->mSettings.setValue("assemblingSuffix", pSet->assemblingSuffix());
mSettings->mSettings.setValue("executableSuffix", pSet->executableSuffix());
mSettings->mSettings.setValue("compilationStage", (int)pSet->compilationStage());
@ -3170,6 +3204,9 @@ Settings::PCompilerSet Settings::CompilerSets::loadSet(int index)
pSet->setCustomLinkParams(mSettings->mSettings.value("customLinkParams").toString());
pSet->setAutoAddCharsetParams(mSettings->mSettings.value("AddCharset", true).toBool());
pSet->setStaticLink(mSettings->mSettings.value("StaticLink", false).toBool());
pSet->setMaxObjectSize(mSettings->mSettings.value("MaxObjectSize", 2).toDouble());
pSet->setWarnLargeObject(mSettings->mSettings.value("WarnLargeObject", false).toBool());
pSet->setExecCharset(mSettings->mSettings.value("ExecCharset", ENCODING_SYSTEM_DEFAULT).toString());
if (pSet->execCharset().isEmpty()) {
pSet->setExecCharset(ENCODING_SYSTEM_DEFAULT);

View File

@ -1409,7 +1409,7 @@ public:
const QString &preprocessingSuffix() const;
void setPreprocessingSuffix(const QString &newPreprocessingSuffix);
const QString &compilationProperSuffix() const;
const QString &warnBigObject() const;
void setCompilationProperSuffix(const QString &newCompilationProperSuffix);
const QString &assemblingSuffix() const;
@ -1423,6 +1423,12 @@ public:
bool isOutputExecutable();
bool isOutputExecutable(Settings::CompilerSet::CompilationStage stage);
double maxObjectSize() const;
void setMaxObjectSize(double maxObjectSize);
bool warnLargeObject() const;
void setWarnLargeObject(bool newWarnLargeObject);
private:
void setDirectories(const QString& binDir, CompilerType mCompilerType);
//load hard defines
@ -1468,6 +1474,8 @@ public:
bool mAutoAddCharsetParams;
QString mExecCharset;
bool mStaticLink;
double mMaxObjectSize;
bool mWarnLargeObject;
QString mPreprocessingSuffix;
QString mCompilationProperSuffix;
@ -1478,6 +1486,7 @@ public:
// Options
QMap<QString,QString> mCompileOptions;
Q_PROPERTY(bool warnStackExcceeded READ warnStackExcceeded WRITE setWarnStackExcceeded NOTIFY warnStackExcceededChanged)
};
typedef std::shared_ptr<CompilerSet> PCompilerSet;

View File

@ -88,6 +88,8 @@ static void loadCompilerSetSettings(Settings::PCompilerSet pSet, Ui::CompilerSet
ui->txtCustomLinkParams->setEnabled(pSet->useCustomLinkParams());
ui->chkAutoAddCharset->setChecked(pSet->autoAddCharsetParams());
ui->chkStaticLink->setChecked(pSet->staticLink());
ui->spinMaxObjectSize->setValue(pSet->maxObjectSize());
ui->chkWarnLargeObject->setChecked(pSet->warnLargeObject());
//rest tabs in the options widget
ui->optionTabs->resetUI(pSet,pSet->compileOptions());
@ -120,7 +122,7 @@ static void loadCompilerSetSettings(Settings::PCompilerSet pSet, Ui::CompilerSet
}
ui->txtPreprocessingSuffix->setText(pSet->preprocessingSuffix());
ui->txtCompilationSuffix->setText(pSet->compilationProperSuffix());
ui->txtCompilationSuffix->setText(pSet->warnBigObject());
ui->txtExecutableSuffix->setText(pSet->executableSuffix());
switch(pSet->compilationStage()) {
case Settings::CompilerSet::CompilationStage::PreprocessingOnly:
@ -199,6 +201,8 @@ void CompilerSetOptionWidget::saveCurrentCompilerSet()
pSet->setCustomLinkParams(ui->txtCustomLinkParams->toPlainText().trimmed());
pSet->setAutoAddCharsetParams(ui->chkAutoAddCharset->isChecked());
pSet->setStaticLink(ui->chkStaticLink->isChecked());
pSet->setMaxObjectSize(ui->spinMaxObjectSize->value());
pSet->setWarnLargeObject(ui->chkWarnLargeObject->isChecked());
pSet->setCCompiler(ui->txtCCompiler->text().trimmed());
pSet->setCppCompiler(ui->txtCppCompiler->text().trimmed());

View File

@ -110,7 +110,7 @@
<item>
<widget class="QTabWidget" name="settingTabs">
<property name="currentIndex">
<number>3</number>
<number>0</number>
</property>
<property name="movable">
<bool>false</bool>
@ -148,6 +148,19 @@
<item>
<widget class="QComboBox" name="cbEncodingDetails"/>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
@ -158,6 +171,57 @@
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="chkWarnLargeObject">
<property name="text">
<string>Syntax error for objects larger than</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="spinMaxObjectSize">
<property name="suffix">
<string>MB</string>
</property>
<property name="maximum">
<double>999999.000000000000000</double>
</property>
<property name="singleStep">
<double>0.500000000000000</double>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chkUseCustomCompilerParams">
<property name="text">

View File

@ -755,6 +755,14 @@
<source>Assembler</source>
<translation type="obsolete">Assembler</translation>
</message>
<message>
<source>MB</source>
<translation type="unfinished">MB</translation>
</message>
<message>
<source>Syntax error for objects larger than</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CppRefacter</name>

View File

@ -533,62 +533,62 @@ p, li { white-space: pre-wrap; }
<context>
<name>Compiler</name>
<message>
<location filename="../compiler/compiler.cpp" line="58"/>
<location filename="../compiler/compiler.cpp" line="59"/>
<source>Clean before rebuild failed.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="69"/>
<location filename="../compiler/compiler.cpp" line="70"/>
<source>Compile Result:</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="71"/>
<location filename="../compiler/compiler.cpp" line="72"/>
<source>- Errors: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="72"/>
<location filename="../compiler/compiler.cpp" line="73"/>
<source>- Warnings: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="74"/>
<location filename="../compiler/compiler.cpp" line="75"/>
<source>- Output Filename: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="76"/>
<location filename="../compiler/compiler.cpp" line="77"/>
<source>- Output Size: %1</source>
<translation>- : %1</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="78"/>
<location filename="../compiler/compiler.cpp" line="79"/>
<source>- Compilation Time: %1 secs</source>
<translation>- : %1 </translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="174"/>
<location filename="../compiler/compiler.cpp" line="175"/>
<source>[Error] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="178"/>
<location filename="../compiler/compiler.cpp" line="179"/>
<source>[Warning] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="182"/>
<location filename="../compiler/compiler.cpp" line="183"/>
<source>[Info] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="186"/>
<location filename="../compiler/compiler.cpp" line="187"/>
<source>[Note] </source>
<translation>[]</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="726"/>
<location filename="../compiler/compiler.cpp" line="739"/>
<source>The compiler process for &apos;%1&apos; failed to start.</source>
<translation>&apos;%1&apos;</translation>
</message>
@ -597,27 +597,27 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="730"/>
<location filename="../compiler/compiler.cpp" line="743"/>
<source>The compiler process crashed after starting successfully.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="733"/>
<location filename="../compiler/compiler.cpp" line="746"/>
<source>The last waitFor...() function timed out.</source>
<translation>waitFor()</translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="736"/>
<location filename="../compiler/compiler.cpp" line="749"/>
<source>An error occurred when attempting to write to the compiler process.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="739"/>
<location filename="../compiler/compiler.cpp" line="752"/>
<source>An error occurred when attempting to read from the compiler process.</source>
<translation></translation>
</message>
<message>
<location filename="../compiler/compiler.cpp" line="742"/>
<location filename="../compiler/compiler.cpp" line="755"/>
<source>An unknown error occurred.</source>
<translation></translation>
</message>
@ -760,12 +760,17 @@ p, li { white-space: pre-wrap; }
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="258"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="270"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="297"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="329"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="344"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="375"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="192"/>
<source>Syntax error for objects larger than</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="322"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="334"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="361"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="393"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="408"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="439"/>
<source>...</source>
<translation>...</translation>
</message>
@ -775,12 +780,12 @@ p, li { white-space: pre-wrap; }
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="164"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="228"/>
<source>Add the following arguments when calling the compiler</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="174"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="238"/>
<source>Add the following arguments when calling the linker</source>
<translation></translation>
</message>
@ -825,22 +830,27 @@ p, li { white-space: pre-wrap; }
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="157"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="170"/>
<source>Statically link libraries</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="185"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="199"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="249"/>
<source>Settings</source>
<translation>/</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="211"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="275"/>
<source>Directories</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="240"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="304"/>
<source>Programs</source>
<translation></translation>
</message>
@ -849,36 +859,36 @@ p, li { white-space: pre-wrap; }
<translation type="vanished">(NASM)</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="418"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="482"/>
<source>Output</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="430"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="494"/>
<source>Compilation Stages</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="436"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="500"/>
<source>Stop after the preprocessing stage</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="443"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="507"/>
<source>Stop after the compilation proper stage</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<source>Stop after the assembling stage</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="450"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="514"/>
<source>Link and generate the executable </source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="499"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="563"/>
<source>Preprocessing output suffix</source>
<translation></translation>
</message>
@ -887,12 +897,12 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="506"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="570"/>
<source>Compiling output suffix</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="479"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="543"/>
<source>Executable suffix</source>
<translation></translation>
</message>
@ -901,37 +911,37 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="394"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="458"/>
<source>gdb</source>
<translation>gdb</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="359"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="423"/>
<source>gdb server</source>
<translation>gdb server</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="281"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="345"/>
<source>Resource Compilerwindres)</source>
<translation>(winres)</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="387"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="451"/>
<source>C++ Compiler(g++)</source>
<translation>C++(g++)</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="326"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="390"/>
<source>Choose C++ Compiler</source>
<translation>C++</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="341"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="405"/>
<source>Choose C Compiler</source>
<translation>C编译器</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="309"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="373"/>
<source>C Compiler(gcc)</source>
<translation>C编译器(gcc)</translation>
</message>
@ -944,22 +954,22 @@ p, li { white-space: pre-wrap; }
<translation type="vanished">(gprof)</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="316"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="380"/>
<source>make</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="294"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="358"/>
<source>Choose make</source>
<translation>make</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="255"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="319"/>
<source>Choose Debugger</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="372"/>
<location filename="../settingsdialog/compilersetoptionwidget.ui" line="436"/>
<source>Choose Resource Compiler</source>
<translation></translation>
</message>
@ -968,12 +978,12 @@ p, li { white-space: pre-wrap; }
<translation type="vanished"></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="258"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="262"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="250"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="254"/>
<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;
@ -992,80 +1002,80 @@ Are you really want to continue?</oldsource>
<translation>UTF-8</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="255"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="259"/>
<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="266"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="290"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="270"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="294"/>
<source>Failed</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="266"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="290"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="270"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="294"/>
<source>Can&apos;t find any compiler.</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="272"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="299"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="276"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="303"/>
<source>Compiler Set Name</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="272"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="276"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="281"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="285"/>
<source>Compiler Set Folder</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="299"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="303"/>
<source>New name</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="366"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="370"/>
<source>Locate C Compiler</source>
<translation>C编译器</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="368"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="380"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="392"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="404"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="416"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="428"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="372"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="384"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="396"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="408"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="420"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="432"/>
<source>Executable files (*.exe)</source>
<translation> (*.exe)</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="378"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="382"/>
<source>Locate C++ Compiler</source>
<translation>C++</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="390"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="394"/>
<source>Locate Make</source>
<translation>make程序</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="402"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="406"/>
<source>Locate GDB</source>
<translation>gdb程序</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="414"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="418"/>
<source>Locate GDB Server</source>
<translation>gdb server程序</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="426"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="430"/>
<source>Locate windres</source>
<translation>windres程序</translation>
</message>
@ -8527,7 +8537,7 @@ Are you really want to continue?</oldsource>
<translation>(-g3)</translation>
</message>
<message>
<location filename="../settings.cpp" line="2958"/>
<location filename="../settings.cpp" line="2990"/>
<source>Would you like Red Panda C++ to search for compilers in PATH?</source>
<translation>C++PATH路径中寻找gcc编译器吗</translation>
</message>
@ -8640,7 +8650,7 @@ Are you really want to continue?</oldsource>
<translation type="vanished">(-S)</translation>
</message>
<message>
<location filename="../settings.cpp" line="2960"/>
<location filename="../settings.cpp" line="2992"/>
<source>Confirm</source>
<translation></translation>
</message>
@ -8661,13 +8671,13 @@ Are you really want to continue?</oldsource>
<translation type="vanished">&lt;br /&gt;&lt;br /&gt;</translation>
</message>
<message>
<location filename="../settings.cpp" line="2950"/>
<location filename="../settings.cpp" line="2956"/>
<location filename="../settings.cpp" line="2982"/>
<location filename="../settings.cpp" line="2988"/>
<source>Compiler set not configuared.</source>
<translation></translation>
</message>
<message>
<location filename="../settings.cpp" line="2952"/>
<location filename="../settings.cpp" line="2984"/>
<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>
@ -8692,12 +8702,12 @@ Are you really want to continue?</oldsource>
<translation>C++</translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="312"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="316"/>
<source>Remove</source>
<translation></translation>
</message>
<message>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="313"/>
<location filename="../settingsdialog/compilersetoptionwidget.cpp" line="317"/>
<source>Do you really want to remove &quot;%1&quot;?</source>
<translation>&quot;%1&quot;</translation>
</message>

View File

@ -652,6 +652,14 @@
<source>Locate windres</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Syntax error for objects larger than</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CppRefacter</name>