2013-10-05 4 views
0

я пишу сценарий MSBuild, который компилирует файл на C++ с использованием MSBuild CL Задачи, что-то вроде:MSBuild CL Задание выходного каталог

<CL Sources="c:\temp\myfile.cpp" /> 

Как я контролировать, где выход (myfile.obj) идет? По умолчанию он переходит к пути от того, где присутствует скрипт (и также является тем местом, откуда я запускаю скрипт): ie, если я запускаю скрипт (c: \ someFolder \ build.proj) от "c: \ someFolder \", тогда myfile.obj находится по адресу "c: \ someFolder \ myfile.obj".

Going диким (нелогичной) догадка, я также пытался теребить OUTDIR собственности (?!), что-то вроде:

<PropertyGroup> 
    <OutDir>d:\somePlace\<OutDir> 
</PropertyGroup> 
... 
<CL Sources="c:\temp\myfile.cpp" /> 

не работает.

+1

Аргумент ObjectFileName. Этот подход неразумный, задача CL имеет * много аргументов. Вместо этого используйте задачу ClCompile, поэтому MSBuild позаботится о вызове CL, и свойства, подобные IntDir и OutDir, действительно имеют эффект. Посмотрите, как он используется в файле .vcxproj, который генерирует IDE. –

+0

Не CLCompile цель? Какой файл сборки я должен упомянуть в теге UseTask? Я не смог найти какую-либо информацию в Интернете относительно CLCompile Task ..? –

+0

Да, цель. Он определен в Microsoft.Cpp.targets, автоматически вставляемый элементом '' в файле .vcxproj. –

ответ

0

Ответ на исходный вопрос о том, как управлять выходом задачи CL, является использование аргумента ObjectFileName (как предоставлено Hans Passant).

Однако теперь кажется, что использование минимального стандарта vcxproj - это лучшая идея (как предложено как stijn, так и Hans Passant).

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