Почему этот муравейник не работает?

<?xml version="1.0" encoding="UTF-8" ?>

<project name="winplay" default="build">

<target name="build">
<echo message="${bitoption}" />
<mkdir dir="build" />
<mkdir dir="build/obj" />
<cc name="g++" objdir="build/obj" debug="${debug}">
<fileset dir="src" includes="*.cpp" />
<compiler name="g++">
<compilerarg value="-std=c++11" />
<compilerarg value="-m32" />
</compiler>
</cc>

<condition property="debugoption" value="-g -O0" else="-O2">
<isset property="debug" />
</condition>
<fileset dir="build/obj" id="objects">
<include name="*.o" />
</fileset>
<pathconvert pathsep=" " property="objectslinker" refid="objects" />

<!-- Due to a bug in GppLinker.java in cpptasks.jar, we must exec g++ because GppLinker erroneously uses gcc, which breaks exception handling. -->
<exec command="g++ -std=c++11 -m32 -mwindows ${debugoption} -o build/winplay ${objectslinker}" failonerror="true" />
</target>

<target name="build-32" depends="build">
<property name="bitoption" value="-m32" />
</target>

<target name="build-64" depends="build">
<property name="bitoption" value="-m64" />
</target><target name="clean">
<delete dir="build" />
</target>
</project>

Я пытаюсь получить $ {bitoption} равным -m32 или -m64, в зависимости от того, вызвали ли мы целевую сборку-32 или сборку-64. Затем я передал бы $ {bitoption} в аргументы компилятора и компоновщика, чтобы я мог сгенерировать соответствующий exe. Я сделал простой эхо-тест, чтобы проверить, правильно ли установлен $ {bitoption}, и он не работает. Все, что я получаю, это:

Buildfile: E:\_dev\windows\MinGW\msys\home\windoze\projects\Winplay\build.xml
build:
[echo] ${bitoption}
[cc] 1 total files to be compiled.
[exec] The command attribute is deprecated.
[exec] Please use the executable attribute and nested arg elements.
build-64:
BUILD SUCCESSFUL
Total time: 1 second

0

Решение

строить target всегда запускается первым, потому что это зависимость, поэтому $ {bitoption} еще не имеет значения.

Вы могли бы сделать это вместо этого:

<target name="build-32" depends="setup-32, build" />
<target name="build-64" depends="setup-64, build" />

<target name="setup-32">
<property name="bitoption" value="-m32" />
</target>

<target name="setup-64">
<property name="bitoption" value="-m64" />
</target>
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector