MSVC и Build steps
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 22.09.08 22:27
Оценка:
Здравствуйте коллеги!

Понадобилось мне сделать копию результирующего файла после сборки.
Сначала залез по ошибке в Custom Build Step, прописал там, что-то не заработало. Понял в чем ошибка, стал пользоваться Post-build event. Но он тоже не работает, не могу понять, почему, и вдобавок все время пишет, что какие-то проблемы с Custom Build Step, а я его очистил полностью, ничего нигде не оставил.

Задача — нужно скопировать выходной файл mylib.lib в mylibm.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, и она ругалась, что не может создать такой каталог).

ткните носом, где разжевано про эти билд степс, пожалуйста
Маньяк Робокряк колесит по городу
Re: MSVC и Build steps
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 22.09.08 22:48
Оценка:
Здравствуйте, Marty, Вы писали:


M>Причем, как я понимаю, первые три строки относятся к Custom Build Step, хотя я его вроде подчистил.

M>По логам не понятно, какие шаги студия выполняет, например, когда я делал кастом билд стем, она ругалась, что не может создать каталог с именем $(TargetPath)$(TargetName)m.lib (подставив значения макросов, конечно), хотя я вообще предполагал, что это не каталог, а результирующий файл (в кастом билд степ она ругалось что не задано Outputs, задавал $(TargetPath)$(TargetName)m.lib, и она ругалась, что не может создать такой каталог).

Первую проблему вроде победил — открыл vcproj в фаре и ручками удалил выделенные строчки:

<Tool
Name="VCCustomBuildTool"
CommandLine=""
Outputs=""

/>


А вот как дальше быть, не понял ;(
Маньяк Робокряк колесит по городу
Re: MSVC и Build steps
От: Vain Россия google.ru
Дата: 23.09.08 10:40
Оценка:
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: MSVC и Build steps
От: Vain Россия google.ru
Дата: 24.09.08 13:45
Оценка:
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Re: MSVC и Build steps
От: John Grey Украина  
Дата: 25.09.08 13:16
Оценка:
Здравствуйте, Marty, Вы писали:
M>По логам не понятно, какие шаги студия выполняет, например, когда я делал кастом билд стем, она ругалась, что не может создать каталог с именем $(TargetPath)$(TargetName)m.lib (подставив значения макросов, конечно), хотя я вообще предполагал, что это не каталог, а результирующий файл (в кастом билд степ она ругалось что не задано Outputs, задавал $(TargetPath)$(TargetName)m.lib, и она ругалась, что не может создать такой каталог).

M>ткните носом, где разжевано про эти билд степс, пожалуйста


Здесь проблема не с custom build steps, а с вызовом функции copy — смотри хелп по ней в самой винде.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.