是否可以在 Eclipse 中设置条件路径变量?这对于例如自定义构建器(它与 Indigo 中的项目一起存储 - 我认为在旧 Eclipse 版本中不是这种情况)在不同平台下调用不同程序很有用。
所以我正在寻找的是一个类似的东西:
${if{${system:OS}=='Windows'}compiler.exe${else}compiler.sh
是否可以在 Eclipse 中设置条件路径变量?这对于例如自定义构建器(它与 Indigo 中的项目一起存储 - 我认为在旧 Eclipse 版本中不是这种情况)在不同平台下调用不同程序很有用。
所以我正在寻找的是一个类似的东西:
${if{${system:OS}=='Windows'}compiler.exe${else}compiler.sh
如果您特别想在不同平台上调用不同的编译器,那么您可以使用 Ant 或 Make 来检测您的平台并调用不同的程序。
在项目的属性中,转到“Builders”并创建一个新的构建步骤。如果您使用 GNU Make 作为构建器,您可以在 Makefile 中使用如下语法:
# Only MS-DOS/Windows builds of GNU Make check for the MAKESHELL variable
# On those platforms, the default is command.com, which is not what you want
MAKESHELL := cmd.exe
# Ask make what OS it's running on
MAKE_OS := $(shell $(MAKE) -v)
# On Windows, GNU Make is built using either MinGW or Cygwin
ifeq ($(findstring mingw, $(MAKE_OS)), mingw)
BUILD_COMMAND := compiler.exe
else ifeq ($(findstring cygwin, $(MAKE_OS)), cygwin)
BUILD_COMMAND := compiler.exe
else ifeq ($(findstring darwin, $(MAKE_OS)), darwin)
BUILD_COMMAND := compiler-osx.sh
else ifeq ($(findstring linux, $(MAKE_OS)), linux)
BUILD_COMMAND := compiler.sh
endif
在 Ant 构建脚本中,条件执行由 、 和 等if
属性unless
确定depends
。该<os family=xxx>
标签告诉您正在运行的操作系统。这是 devdaily 的一个例子:
<?xml version="1.0"?>
<!--
An Ant build script that demonstrates how to test to see
which operating system (computer platform) the Ant build
script is currently running on. Currently tests for Mac OS X,
Windows, and Unix systems.
Created by Alvin Alexander, DevDaily.com
-->
<project default="OS-TEST" name="Ant Operating System Test" >
<!-- set the operating system test properties -->
<condition property="isMac">
<os family="mac" />
</condition>
<condition property="isWindows">
<os family="windows" />
</condition>
<condition property="isUnix">
<os family="unix" />
</condition>
<!-- define the operating system specific targets -->
<target name="doMac" if="isMac">
<echo message="Came into the Mac target" />
<!-- do whatever you want to do here for Mac systems -->
</target>
<target name="doWindows" if="isWindows">
<echo message="Came into the Windows target" />
</target>
<target name="doUnix" if="isUnix">
<echo message="Came into the Unix target" />
</target>
<!-- define our main/default target -->
<target name="OS-TEST" depends="doMac, doWindows, doUnix">
<echo message="Running OS-TEST target" />
</target>
</project>
我通过运行 Windows.exe
文件作为构建后步骤来解决它。
在 Windows 下这很好,但在 Linux 中,我必须在命令前加上wine
.
为了解决 OS 条件问题,我在 Eclipse 中做了一个环境变量:
wineLinux=wine
然后像这样构建后期构建步骤:
${wine${OsType}} window_file.exe args
系统变量OsType
将展开为Linux
,在上一步中创建的环境变量wineLinux
将展开为wine
。