Я пишу сценарий MSBuild, который компилирует файл C++, используя задачу MSBuild CL, например:
<CL Sources="c:\temp\myfile.cpp" />
Как я могу контролировать, куда идет выход (myfile.obj)? По умолчанию он переходит к пути от того, где присутствует скрипт (и также является тем местом, откуда я запускаю скрипт): ie, если я запустил скрипт (c:\someFolder\build.proj) из "c:\someFolder\", тогда myfile.obj помещается в папку" c:\someFolder\myfile.obj ".
Идя по дикой (нелогичной) догадке, я также попытался fidgeting с свойством OutDir (?!), что-то вроде:
<PropertyGroup>
<OutDir>d:\somePlace\<OutDir>
</PropertyGroup>
...
<CL Sources="c:\temp\myfile.cpp" />
Не работает.
Ответ на исходный вопрос о том, как управлять выводом задачи CL, - это использовать аргумент ObjectFileName (как указано Hans Passant).
Однако теперь кажется, что использование минимального стандарта vcxproj является лучшей идеей (как это предложено как stijn, так и Hans Passant).