Здравствуйте коллеги!
Понадобилось мне сделать копию результирующего файла после сборки.
Сначала залез по ошибке в Custom Build Step, прописал там, что-то не заработало. Понял в чем ошибка, стал пользоваться Post-build event. Но он тоже не работает, не могу понять, почему, и вдобавок все время пишет, что какие-то проблемы с Custom Build Step, а я его очистил полностью, ничего нигде не оставил.
Задача — нужно скопировать выходной файл mylib.lib в mylib
m.lib в том же выходном каталоге.
Post-build event:
Command line: copy /Y "$(TargetPath)$(TargetName).lib" "$(TargetPath)$(TargetName)m.lib"
Descripton:
Excluded from build: no
при сборке проекта выдает:
myproject : warning PRJ0029 : The 'Outputs' property for the project-level custom build step is not set. The custom build step will be skipped.
Performing Custom Build Step
The custom build tool has been skipped.
Performing Post-Build Event...
Не удается найти указанный файл.
Project : error PRJ0019: A tool returned an error code from "Performing Post-Build Event..."
Build Time 0:00
Build log was saved at "file://...\BuildLog.htm"
cli2 — 1 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Причем, как я понимаю, первые три строки относятся к Custom Build Step, хотя я его вроде подчистил.
По логам не понятно, какие шаги студия выполняет, например, когда я делал кастом билд стем, она ругалась, что не может создать каталог с именем $(TargetPath)$(TargetName)m.lib (подставив значения макросов, конечно), хотя я вообще предполагал, что это не каталог, а результирующий файл (в кастом билд степ она ругалось что не задано Outputs, задавал $(TargetPath)$(TargetName)m.lib, и она ругалась, что не может создать такой каталог).
ткните носом, где разжевано про эти билд степс, пожалуйста
Здравствуйте, Marty, Вы писали:
M>Причем, как я понимаю, первые три строки относятся к Custom Build Step, хотя я его вроде подчистил.
M>По логам не понятно, какие шаги студия выполняет, например, когда я делал кастом билд стем, она ругалась, что не может создать каталог с именем $(TargetPath)$(TargetName)m.lib (подставив значения макросов, конечно), хотя я вообще предполагал, что это не каталог, а результирующий файл (в кастом билд степ она ругалось что не задано Outputs, задавал $(TargetPath)$(TargetName)m.lib, и она ругалась, что не может создать такой каталог).
Первую проблему вроде победил — открыл vcproj в фаре и ручками удалил выделенные строчки:
<Tool
Name="VCCustomBuildTool"
CommandLine=""
Outputs=""
/>
А вот как дальше быть, не понял ;(
Здравствуйте, Marty, Вы писали:
M>Причем, как я понимаю, первые три строки относятся к Custom Build Step, хотя я его вроде подчистил.
M>По логам не понятно, какие шаги студия выполняет, например, когда я делал кастом билд стем, она ругалась, что не может создать каталог с именем $(TargetPath)$(TargetName)m.lib (подставив значения макросов, конечно), хотя я вообще предполагал, что это не каталог, а результирующий файл (в кастом билд степ она ругалось что не задано Outputs, задавал $(TargetPath)$(TargetName)m.lib, и она ругалась, что не может создать такой каталог).
Насколько помню там надо перечислить файлы которые надо отслеживать на последующие изменения (это вроде для фичи Minimal Rebuild).
Указывать где-то так:
"$(TargetName)m.lib"
PS:
Насчёт Input файлов не знаю как студия их отслеживает, возможно подразумевается, что все используемые файлы в "Build Step" уже должны быть либо добавлены в "Outputs" на другом "Build Step"'е, либо быть выходными файлами проекта (которые отслеживаются автоматически). Поэтому, т.к. Inputs нету, часто в качестве Inputs, используют Outputs:
"$(TargetName).lib" "$(TargetName)m.lib"
Но ИМХО это может потихоньку разрушить Minimal Rebuild.
Есть другой вариант, добавлять Input файлы, которые не из проекта, в проект с флагом "Excluded From Build", но работоспособность этого я не проверял.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Насколько помню там надо перечислить файлы которые надо отслеживать на последующие изменения (это вроде для фичи Minimal Rebuild).
V>Указывать где-то так:
V>V>"$(TargetName)m.lib"
V>
V>PS:
V>Насчёт Input файлов не знаю как студия их отслеживает
Щас вспомнил, есть там опция "Additional Dependencies", вот туда следует забивать Input файлы, как я показал, а в Outputs должнои спутями работать.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Marty, Вы писали:
M>По логам не понятно, какие шаги студия выполняет, например, когда я делал кастом билд стем, она ругалась, что не может создать каталог с именем $(TargetPath)$(TargetName)m.lib (подставив значения макросов, конечно), хотя я вообще предполагал, что это не каталог, а результирующий файл (в кастом билд степ она ругалось что не задано Outputs, задавал $(TargetPath)$(TargetName)m.lib, и она ругалась, что не может создать такой каталог).
M>ткните носом, где разжевано про эти билд степс, пожалуйста
Здесь проблема не с custom build steps, а с вызовом функции copy — смотри хелп по ней в самой винде.