我有以下问题:在操作系统是 Linux 的情况下和在操作系统是 MacOs 的情况下,我必须执行不同的操作。
所以我创建了以下 Ant 脚本目标:
/usr/share/XCloud/appl/lib/
${basedir}/../../../Mac/CrystalIce/CrystalIce/CrystalIce/Build/Products/Debug/CrystalIce.app/Contents/Resources/java/
..................................................
..................................................
COPY OTHER FILES
当它执行init目标时,该目标依赖于initUnixPathVàinitMacPat目标
因此发生了以下事情:
1) 如果我在 Linux 计算机上执行它,它首先执行将 path 属性设置为正确值的 initUnixPath:“/usr/share/XCloud/appl/lib/”,然后执行 initMacPath 并且不执行任何操作,因为 Linux 计算机不是 MacOs 计算机。因此,执行 init 目标并将文件复制到正确的位置:“/usr/share/XCloud/appl/lib/”
2)如果我在MacOs机器上执行它,它首先执行设置con đườngcủainitUnixPath(因为MacOs是基于BSD的系统,所以它是UNIX机器) > 属性修改为WRONG值“/usr/share/XCloud/appl/lib/”(因为这是Linux系统的路径,而不是MacO的路径),然后执行initMacPath (因为它匹配)并尝试为 MacOs 系统设置正确的路径(“${basedir}/../../../../../../../../usr/share/XCloud/appl/lib") 但它无法执行此操作,因为该属性刚刚设置且无法更改!!!)
所以我遇到了问题,因为在 MacOs 计算机上,我的路径值设置为错误的 Linux 路径(“/usr/share/XCloud/appl/lib/”),而不是正确的 MacOs 路径(“$ {basedir}/../../../../../../../../usr/share/XCloud/appl/lib")
我找到的唯一解决方案是更改 init 目标中依赖项的顺序:
至:
所以是Mac为MacOs系统设置了正确的路径,然后在initUnixPath中输入尝试设置Linux路径但不行(并且在Mac上运行良好)
如果是 Linux 系统,请尝试执行 initMacPath,但 Linux 不是 Mac,因此退出此目标并执行 initUnixPath,其中正确设置了 Linux 路径(并且运行良好)在 Linux 上)
但这对我来说似乎是一个非常肮脏的解决方案!!!
所以我问我是否可以更准确地检测它是否是 LINUX 系统(而不是通用的 UNIX 系统)。我能做到吗?
Tnx
安德里亚
我总是将安装的二进制文件符号链接(symbolic link)到 /usr/local/bin
。这样我就不用担心是否安装在/Applications
了或/opt
hoặc/usr/share
等。如果您在该位置没有看到可执行文件(通过
任务),则使构建失败并提供有关执行操作的说明。
property="xcloud.app.available"/>
Could not find required app...
download it from yadda, yadda, yadda...
Install it by blah, blah, blah...
Then create a symbolic link to ${link.dir}...
Bạn cũng có thể sử dụnguname
如果是Unix类型系统则命令查看是否是Linux:
os="unix"
outputproperty="os.type"/>
Tôi là một lập trình viên xuất sắc, rất giỏi!