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
アンドレア