- enhancement: before run a project'executable, check if there's project file newer than the executable
This commit is contained in:
parent
3f74a5fd10
commit
5edcad104e
3
NEWS.md
3
NEWS.md
|
@ -24,7 +24,8 @@ Red Panda C++ Version 2.0
|
||||||
- enhancement: when closing project, prevent all editors that belongs to the project check syntax and parse todos.
|
- enhancement: when closing project, prevent all editors that belongs to the project check syntax and parse todos.
|
||||||
- enhancement: add "auto reformat when saving codes" in "Options" / "Editor" / "Misc" (off by default)
|
- enhancement: add "auto reformat when saving codes" in "Options" / "Editor" / "Misc" (off by default)
|
||||||
- enhancement: use "todo" and "fixme" as the keyword for TODO comments
|
- enhancement: use "todo" and "fixme" as the keyword for TODO comments
|
||||||
- fix: rules for obj missed in makefile generated for project
|
- fix: rules for obj missing in the makefile generated for project
|
||||||
|
- enhancement: before run a project'executable, check if there's project file newer than the executable
|
||||||
|
|
||||||
Red Panda C++ Version 1.5
|
Red Panda C++ Version 1.5
|
||||||
|
|
||||||
|
|
|
@ -323,7 +323,7 @@ void ProjectCompiler::writeMakeObjFilesRules(QFile &file)
|
||||||
if (mProject->options().usePrecompiledHeader)
|
if (mProject->options().usePrecompiledHeader)
|
||||||
precompileStr = " $(PCH) ";
|
precompileStr = " $(PCH) ";
|
||||||
|
|
||||||
QList<PProjectUnit> projectUnits;
|
QList<PProjectUnit> projectUnits=mProject->unitList();
|
||||||
foreach(const PProjectUnit &unit, projectUnits) {
|
foreach(const PProjectUnit &unit, projectUnits) {
|
||||||
FileType fileType = getFileType(unit->fileName());
|
FileType fileType = getFileType(unit->fileName());
|
||||||
// Only process source files
|
// Only process source files
|
||||||
|
|
|
@ -1880,7 +1880,9 @@ void MainWindow::runExecutable(RunType runType)
|
||||||
CompileTarget target =getCompileTarget();
|
CompileTarget target =getCompileTarget();
|
||||||
if (target == CompileTarget::Project) {
|
if (target == CompileTarget::Project) {
|
||||||
QStringList binDirs = mProject->binDirs();
|
QStringList binDirs = mProject->binDirs();
|
||||||
if (mProject->modified() &&
|
QFileInfo execInfo(mProject->executable());
|
||||||
|
QDateTime execModTime = execInfo.lastModified();
|
||||||
|
if (execInfo.exists() && mProject->unitsModifiedSince(execModTime) &&
|
||||||
QMessageBox::question(
|
QMessageBox::question(
|
||||||
this,
|
this,
|
||||||
tr("Rebuild Project"),
|
tr("Rebuild Project"),
|
||||||
|
|
|
@ -156,6 +156,18 @@ QString Project::makeFileName()
|
||||||
return QDir(directory()).filePath(MAKEFILE_NAME);
|
return QDir(directory()).filePath(MAKEFILE_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Project::unitsModifiedSince(const QDateTime& time)
|
||||||
|
{
|
||||||
|
foreach(const PProjectUnit& unit, mUnits) {
|
||||||
|
QFileInfo info(unit->fileName());
|
||||||
|
if (info.lastModified()>time) {
|
||||||
|
qDebug()<<info.lastModified()<<time;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool Project::modified() const
|
bool Project::modified() const
|
||||||
{
|
{
|
||||||
return mModified;
|
return mModified;
|
||||||
|
|
|
@ -210,6 +210,7 @@ public:
|
||||||
QString directory() const;
|
QString directory() const;
|
||||||
QString executable() const;
|
QString executable() const;
|
||||||
QString makeFileName();
|
QString makeFileName();
|
||||||
|
bool unitsModifiedSince(const QDateTime& time);
|
||||||
bool modified() const;
|
bool modified() const;
|
||||||
void setFileName(QString value);
|
void setFileName(QString value);
|
||||||
void setModified(bool value);
|
void setModified(bool value);
|
||||||
|
|
Loading…
Reference in New Issue