Add ${relative_dir} useful to solve case mentioned at https://github.com/SpartanJ/ecode/discussions/876

This commit is contained in:
Martín Lucas Golini
2026-04-15 00:34:49 -03:00
parent 4a4da521d9
commit f95f32eeba
6 changed files with 71 additions and 73 deletions

View File

@@ -29,6 +29,7 @@ static const char* VAR_NPROC = "${nproc}";
static const char* VAR_CURRENT_DOC = "${current_doc}";
static const char* VAR_CURRENT_DOC_NAME = "${current_doc_name}";
static const char* VAR_CURRENT_DOC_DIR = "${current_doc_dir}";
static const char* VAR_RELATIVE_DIR = "${relative_dir}";
static void replaceVar( ProjectBuildStep& s, const std::string& var, const std::string& val ) {
static std::string slashDup = FileSystem::getOSSlash() + FileSystem::getOSSlash();
@@ -398,12 +399,16 @@ void ProjectBuildManager::replaceDynamicVars( ProjectBuildCommand& cmd ) {
std::string curDocName =
FileSystem::fileRemoveExtension( FileSystem::fileNameFromPath( curDoc ) );
std::string curDocDir = FileSystem::fileRemoveFileName( curDoc );
std::string relativeDir = curDocDir;
FileSystem::filePathRemoveBasePath( mProjectRoot, relativeDir );
FileSystem::dirAddSlashAtEnd( relativeDir );
replaceVar( cmd, VAR_OS, currentOS );
replaceVar( cmd, VAR_ARCH, Sys::getOSArchitecture() );
replaceVar( cmd, VAR_NPROC, nproc );
replaceVar( cmd, VAR_CURRENT_DOC, curDoc );
replaceVar( cmd, VAR_CURRENT_DOC_NAME, curDocName );
replaceVar( cmd, VAR_CURRENT_DOC_DIR, curDocDir );
replaceVar( cmd, VAR_RELATIVE_DIR, relativeDir );
if ( cmd.workingDir.empty() )
cmd.workingDir = mProjectRoot;
}