Visual Studio 2013 — VS2013 C ++ Custom Build Tool не работает

Приношу свои извинения за длинный текст, но у меня возникли некоторые проблемы с использованием функции Custom Build Tool в VS2013 для проектов C ++. Я хочу взять файл проекта «resource.h» и сгенерировать выходной файл, который для этих целей мы будем называть «resource.out».

Я написал инструмент, который принимает два параметра командной строки — файл «resource.h» и файл «resource.out». Сначала я попробовал это на простом сгенерированном приложением-мастере приложении doc / view MFCApplication1. Я добавил файл «resource.x» в качестве файла-пустышки, чтобы он был «скомпилирован» с помощью специального инструмента сборки. Для этого конкретного файла я установил «Тип элемента» на «Custom Build Tool», и при настройке инструмента у меня есть следующее:

Command Line: "<path-to-tool>" resource.h .\res\resource.out
Outputs: .\res\resource.out
Additional Dependencies: resource.h

Это работает. Когда я собираю MFCApplication1, я вижу следующее в моем окне вывода:

1>  Performing Custom Build Tools
1>  Successfully generated resource out file ('res\resource.out')

Вторая строка выводится из моего пользовательского инструмента сборки. Так что в этом простом тесте все работает так, как я ожидал.

Теперь я пытаюсь сделать то же самое в моем реальном коде. У меня есть решение с несколькими проектами, и один проект отвечает за использование ресурсов другого проекта и создание библиотеки DLL. Структура каталогов выглядит так:

Main
MainApp
resource.h
MainRes
MainRes.vcxproj references "..\MainApp\resource.h"

Таким образом, проект MainRes ссылается на файл ресурса из проекта MainApp. После того, что было успешным в моем эксперименте с MFCApplication1, я добавил «resource.x» в основное приложение и сослался на него в MainRes:

Main
MainApp
resource.h
resource.x
MainRes
MainRes.vcxproj references "..\MainApp\resource.h"MainRes.vcxproj references "..\MainApp\resource.x"

В проекте MainRes я выбрал «resource.x» и через свойства контекста установил его «Тип элемента» на «Custom Build Tool» и настроил его следующим образом:

Command Line: "<path-to-tool>" ..\MainApp\resource.h ..\MainApp\res\resource.out
Outputs: ..\MainApp\res\resource.out
Additional Dependencies: ..\MainApp\resource.h

Теперь, когда я пытаюсь скомпилировать «resource.x» в MainRes, я получаю следующее предупреждение (предупреждение MSB8018: не указаны выходные данные для элемента «.. \ MainApp \ resource.x»):

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): warning MSB8018: No outputs specified for item "..\MainApp\resource.x". Its custom build command will be skipped.

Поэтому я подумал, что это может быть контекстом, и изменил конфигурацию на:

Command Line: "<path-to-tool>" resource.h .\res\resource.out
Outputs: .\res\resource.out
Additional Dependencies: resource.h

Я получаю то же предупреждение. Я не понимаю, что я делаю здесь не так. У меня ‘Outputs’ установлен в файл, и у меня есть выходной файл в командной строке. Заранее спасибо за чью-либо помощь в этом. Я потратил слишком много времени на это уже …

  • Стив

2

Решение

Ооооо … Наконец-то я понял, что по какой-то причине изменение конфигурации Custom Build Tool с помощью редактора фактически сохраняло данные в vcxproj с неверной конфигурацией. Несмотря на то, что в редакторе у меня были правильно настроены Конфигурация и Платформа, он записывал в файл другую конфигурацию. Кто, черт возьми, знает, почему это так, но извлеченный урок — всегда проверяйте свой файл vcxproj!

1

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

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