1

OS が Linux の場合と MacOS の場合で、別の操作を実行する必要があります。

そこで、次の Ant スクリプト ターゲットを作成しました。

<condition property="unix">
    <os family="unix" />
</condition>

<condition property="mac">
    <os family="mac" />
</condition>

<target name="initUnixPath" if="unix" depends="clean">
    <echo message="initUnixPath: SETTING UNIX PATH" />
    <property name="path">/usr/share/XCloud/appl/lib/</property>
</target>

<target name="initMacPath" if="mac" depends="clean">
    <echo message="initMacPath: SETTING MAC PATH" />
    <property name="path">${basedir}/../../../Mac/CrystalIce/CrystalIce/CrystalIce/Build/Products/Debug/CrystalIce.app/Contents/Resources/java/</property>
</target>

    <!-- Copy SharedLib jar files: -->
    <!--<copy todir="${basedir}/../../../../../../../../usr/share/XCloud/appl/lib">-->
    <!--<copy todir="/usr/share/XCloud/appl/lib">-->
    <echo message="${path}" />
    <copy todir="${path}">
        <fileset dir="${basedir}/../../SharedLib" />
    </copy>
            ..................................................
            ..................................................
            COPY OTHER FILES

initターゲットを実行する場合、このターゲットはinitUnixPathおよびinitMacPatターゲットに依存します

したがって、次のことが起こります。

1)Linuxマシンで実行すると、最初にパスプロパティを正しい値に設定するinitUnixPathを実行します:「/usr/share/XCloud/appl/lib/」、次にinitMacPathを実行し、何もしません。は MacOS マシンではありません。そのため、 initターゲットを実行し、適切な場所にファイルをコピーします: "/usr/share/XCloud/appl/lib/"

2) MacOs マシンで実行する場合、最初にinitUnixPathを実行します(MacOs は BSD ベースのシステムであるため、UNIX マシンであるため)。パスプロパティを間違った値 "/usr/share/ XCloud /appl/lib"に設定します。 /" (これは Linux システムのパスであり、MacO のパスではないため)、次に initMacPath を実行し(一致するため)、MacO システムの正しいパス ("${basedir}/../../. ./../../../../../usr/share/XCloud/appl/lib") ですが、プロパティが設定されているだけで変更できないため、実行できません!!! )

MacOs マシンでは、パスの値が間違った Linux パス ("/usr/share/XCloud/appl/lib/") に設定されており、正しい MacOs パス ("${basedir} /../../../../../../../../usr/share/XCloud/appl/lib")

私が見つけた唯一の解決策は、init ターゲットの依存関係の順序を次のように変更することです

<target name="init" depends="initUnixPath, initMacPath ">

に:

<target name="init" depends="initMacPath, initUnixPath ">

したがって、Mac は MacOs システムの正しいパスを設定し、次に initUnixPath に入力しLinux パスを設定しようとしますが、できません (Mac ではうまく機能します)。

Linux システムの場合は initMacPath を実行しようとします、Linux は Mac ではないため、このターゲットから終了し、Linux パスを正しく設定した場所でinitUnixPathを実行します (Linux で正常に動作します)。

しかし、これは私には非常に汚い解決策のようです!!!

そのため、それが LINUX システム (汎用 UNIX システムではない) であるかどうかをより正確に検出できるかどうかを尋ねています。私はそれを行うことができますか?

TNX

アンドレア

4

1 に答える 1