2012-01-29 1 views
1

Можно ли установить условные переменные пути в Eclipse? Это было бы полезно, например, для пользовательского построителя (который хранится в проекте в Indigo - я думаю, что это было не так в старых версиях Eclipse) для вызова другой программы на другой платформе.Переменные условного пути Eclipse

Так что я ищу бы что-то вдоль линий:

${if{${system:OS}=='Windows'}compiler.exe${else}compiler.sh 

ответ

1

Если вы специально хотели бы, чтобы вызвать различные компиляторы на разных платформах, то вы можете использовать Ant или сделать, чтобы обнаружить платформу и вызывать разные программы.

В свойствах вашего проекта перейдите к «Строителям» и создайте новый шаг сборки. Если вы используете 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> 
+0

Спасибо за ваш ответ. Я знаю о возможности использовать ant (или любой другой инструмент сборки, если на то пошло), но я подумал, что, возможно, есть способ, чтобы Eclipse поддерживал ветвление на основе платформы напрямую. Видимо, нет. Таким образом, ваш ответ лучше всего в качестве общего решения проблемы. –

0

Я решил это, запустив окна .exe файл в качестве шага после построения.

Это нормально под Windows, но в Linux я должен был ввести команду wine.

Чтобы решить условную задачу OS, я сделал переменную среды в Eclipse:

wineLinux=wine 

А потом построили после сборки-шаг, как это:

${wine${OsType}} window_file.exe args 

Система переменной OsType будет расширяться до Linux и переменная окружения wineLinux, которая была создана на предыдущем шаге, будет расширяться до wine.

 Смежные вопросы

  • Нет связанных вопросов^_^