Hello Sieghard!

Wow many thanks for all that infos.

The problem was this: for each mse widget the caption/hint are dependent of 
/msegui/lib/kernel/mseconsts.pas and msesockobjects.pas.

I would like that the compiler choose the customed units from my application in 
a other directory.
With all the attemps that I did it always ended using the files from 
/msegui/lib/kernel/ and not mine.

The only way I found is to copy those files into the same directory as the 
project.

But sure that after studying your post I will find a solution.

By the way, with last commit in mseide-msegui, there is no need to copy the 
files, all is managed with the "-mse_dynpo" parameter.

Fre;D

________________________________
De : Sieghard via mseide-msegui-talk <mseide-msegui-talk@lists.sourceforge.net>
Envoyé : jeudi 27 janvier 2022 23:04
À : mseide-msegui-talk@lists.sourceforge.net 
<mseide-msegui-talk@lists.sourceforge.net>
Cc : Sieghard <s_c_...@arcor.de>
Objet : Re: [MSEide-MSEgui-talk] Hello back!

Hallo Fred van Stappen,

vous evrit au Thu, 27 Jan 2022 00:33:56 +0000:

> About search sequence:
>
>    1. In the current directory.
>    2. In the directory where the compiler binary is (not under
> LINUX). // That is the problem

Why should this be a problem? Do you keep all (or just some) units
in /usr/bin or wherever on the path your fpc resides? Or do you copy
or link the compiler into your working directory?
Isn't the common way to keep executables on Unixens to put them into
a directory on the path, and put their working data somewhere else,
to not intermix or interfere with each other? (For Windows, I don't
know.)

>    3. In the parent directory of the current directory.
>    4. In the subdirectory units of the current directory
>    5. In the standard unit directory."
>
> Imho, the 2. should not be there but at last, after all sequences.

Yes, 2. should not be there, neither on Linux NOR on Windows or
whatever.

> Re-imho it would give much more freedom to organize a project and not
> be obliged to paste the units that should be loaded first into the
> root current directory.

This DOES give that freedom - I DID try it yesterday, prepended a
specific directory to the search path by specifying it on the compiler
command line, and it DID work as expected & intended.
Prepending a path to the compiler command line isn't a real chore using
the project options settings of either mseide or your ideU, I think.
It's not even difficult using a simple script, as I did.
The script reads as follows (I named it "make", to be called as
"./make [-<switch char>]"):
----------------------
#! /bin/sh

how ()
{
    cat <<- HELP
        Aufruf: $0 [-h|-c|-t|-s|-n|-r]
        mit:
            -h  Diesen Hilfetext ausgeben
            -c  Erzeugte Zwischendateien bereinigen (clean)
            -t  dto.
            -s  Programmdatei von Symbolen bereinigen ("strippen")
            -n  Erzeugte Zwischendateien bereinigen, dann kompilieren
            -r  Kompilieren und erzeugte Zwischendateien bereinigen
                ohne Parameter nur kompilieren
            -x  Erzeugtes Programm gleich ausführen (nicht mit -r)

HELP
}

make ()
{
    local mainfile targetfile result makeopts

    targetfile=$(pwd -P); targetfile=${targetfile##*/}.prj
    [ -e $targetfile ] || targetfile=$(echo *.prj)
    targetfile=${targetfile%%.prj*}
    PROJECTNAME=$targetfile
    targetfile=$targetfile.prj
    eval $(grep -- "mainfile=" $targetfile)
    eval $(grep -- "targetfile=" $targetfile)
    [ -e makeopts ] && makeopts=$(< makeopts)
    $DEBUG \
    ppcx64 -o$targetfile $makeopts\
     -Fu/usr/lib64/msegui/lib/common/*
-Fu/usr/lib64/msegui/lib/common/kernel\
-Fi/usr/lib64/msegui/lib/common/kernel
-Fu/usr/lib64/msegui/lib/common/kernel/linux\ -l -Mobjfpc -Sh -gl\
$mainfile result=$?
    echo ""
    [ "$result" = 0 ] && [ "$1" = -x ] && $DEBUG $targetfile
}

clean ()
{
    [ "$DEBUG" ] && { echo clean; return; }
    rm -vf *.bak? > /dev/null
    rm -vf *.bak > /dev/null
    rm -vf *.o > /dev/null
    rm -vf *.ppu > /dev/null
}

tidy ()
{
    clean       # vorerst...
}

stripp ()
{
    local targetfile

    targetfile=$(pwd -P); targetfile=${targetfile##*/}.prj
    [ -e $targetfile ] || targetfile=$(echo *.prj)
    targetfile=${targetfile%%.prj*}
    PROJECTNAME=$targetfile
    targetfile=$targetfile.prj
    eval $(grep -- "targetfile=" $targetfile)
    $DEBUG strip $targetfile
}

case $1 in
    -h*) how; exit;;
    -c*) clean; exit;;
    -t*) tidy; exit;;
    -s*) stripp; exit;;
    -n*) clean;;
    -r*) make && clean; exit;;
    *)   ;;
esac
make $1
----------------------
To prepend some parameters to the compiler command line, simply put a
file named "makeopts" containing them into the project directory. It
might contain somethin like this:
----------------------
-vu -dmse_dynpo -Fu. -Fu../dialogs
----------------------
which will (also) preferentally take any unit residing in the working
directory and then from the directory "../units" as seen from the
working directory, in that order. All the other unit directories will
not be scanned for files found there.
I encourage you to give it a try, with mseide, your ideU (and possibly
the above script if you like).

--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------



_______________________________________________
mseide-msegui-talk mailing list
mseide-msegui-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk
_______________________________________________
mseide-msegui-talk mailing list
mseide-msegui-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk

Reply via email to