Приношу свои извинения за длинный текст, но у меня возникли некоторые проблемы с использованием функции 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' установлен в файл, и у меня есть выходной файл в командной строке. Заранее спасибо за чью-либо помощь в этом. Я потратил на это слишком много времени ...