У меня возникла странная проблема с запуском cl.exe, который меня озадачил. В большом VS2008 решении, состоящем из проектов C/C++, у меня есть один проект, который запускает некоторые скрипты для выполнения дополнительной обработки. Проект состоит из события предварительной сборки, которое вызывает сценарий Perl (ActiveState Perl находится на машине). Этот скрипт Perl вызывает cl.exe с /E
для генерации предварительно обработанного вывода, который перенаправляется в файл. Строка в Perl выглядит следующим образом:Почему cl.exe не генерирует какой-либо вывод, когда я вызываю его из Perl?
my $foo = `"\path\to\cl.exe" @args.rsp >out.txt 2>err.txt`;
args.rsp представляет собой обычный текстовый файл, который содержит кучу командной строки арг для cl.exe, в том числе /E
, чтобы получить выход предварительного процессора на стандартный вывод.
Эта точная командная строка работает, как ожидается, при запуске из командной строки VS2008. Построение проекта также отлично работает на моей машине с Windows XP. Однако в моем новом окне Windows 7, когда я создаю проект, out.txt заканчивается пустым. Я также должен добавить, что на некоторых из моих коровских ящиков Windows 7 он отлично работает, а на некоторых других - нет.
Очевидно, что существует какая-то разница в конфигурации, но я не понимаю, что это может быть. Мы проверили соответствующие версии VS2008 SP1 и ActiveState Perl. Я пробовал множество обходных путей внутри скрипта perl - используя system()
вместо обратных ссылок, используя cl.exe /P
для вывода в файл, а затем перемещения файла (файл пуст), отключая переменную окружения VS_UNICODE_OUTPUT
(без эффекта). Ничто не изменило поведение - вывод создается, когда командная строка запускается вручную, но не тогда, когда она запускается внутри события предварительной сборки для этого проекта.
Любые идеи о том, какая проблема конфигурации может быть причиной этого? Я довольно много из возможностей преследовать.
Я вижу, что вы решили проблему, но я удивлен, поскольку вам кажется, что вам не хватает удвоенной обратной косой черты на пути - или это просто артефакт для форматирования SO? –