Захватить файл ответов Visual Studio?

У меня проблемы с переносом библиотеки C ++ в Windows Phone через командную строку с nmake, Makefile вызывает cl.exe а также link.exe используя Visual Studio x86_arm инструменты и имеет основные рецепты.

Я использую проект Visual Studio Phone в качестве ссылки. Под Монитор процесса, Я заметил, что Visual Studio использует файл ответов, а не управляет компилятором напрямую. То есть Visual Studio вызывать cl.exe <response file>,

Согласно Параметры компилятора, Файлы ответов ( @ опция):

Файл ответов может содержать любые команды, которые вы указали бы в
командная строка. Это может быть полезно, если ваши аргументы командной строки превышают
127 символов.

Это может быть моей проблемой с портом, так как моя командная строка содержит более 500 символов (7+ строк с переносом в консоли).

Visual Studio использует временный файл ответов, записанный в AppData файл, который немедленно удаляется. Я хочу проверить файл ответов Visual Studio и попробовать его использовать.

Вопрос: Как я могу захватить или проверить файл ответов Visual Studio?

3

Решение

Мои проекты VS, кажется, не используют файлы ответов (возможно, проекты слишком малы?), Однако получают nmake сгенерировать и использовать файл ответов довольно просто, используя встроенные файлы nmake. Ниже приведен простой make-файл, который скомпилирует hello.c используя файл ответов на cl командная строка:

PROJNAME=hello

all:
cl @<<
-c $(PROJNAME).c
-Ox
<<

В основном, положить << на команду, которой вы хотите передать inline, затем после команды просто поместите содержимое файла и завершите встроенный файл другим << маркер как разделитель.

Бег nmake на этом makefile результат:

C:\temp>nmake

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

cl @C:\Users\mikeb\AppData\Local\Temp\nmAC77.tmp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl -c hello.c
-Ox

hello.c

Вы можете видеть, что макросы nmake раскрываются во встроенном файле.

Увидеть Документы MSDN для получения более подробной информации (хотя документы довольно скудны — они могут использовать пример или два).


Обновить:

И если вы действительно хотите или вам нужно захватить файл ответов, который использует VS, и не можете найти другой способ сделать это, скомпилируйте следующую программу и замените программу, например, на VS, которая работает cl.exe, с ним (очевидно, где-то спрятать оригинальный файл программы, чтобы вы могли отменить операцию):

#include <stdio.h>

void dump(char const* fname)
{
FILE* fp = NULL;
char buf[1000];
char* result = NULL;

printf("Dumping response file \"%s\":\n\n", fname);

fp = fopen(fname, "r");

if (!fp) return;

do {
result = fgets(buf, sizeof(buf), fp);
if (result) printf("%s", buf);
} while (result);

return;
}int main(int argc, char** argv)
{
int i;
for (i = 1; i < argc; ++i) {
char* fname;
if (argv[i][0] != '@') {
// not a response file
continue;
}

fname = &(argv[i][1]);

dump(fname);
}

return 0;
}
2

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

Вы можете запретить удаление файлов .rsp, установив переменную окружения MSBUILDPRESERVETOOLTEMPFILES в 1,

0

По вопросам рекламы [email protected]