Моя команда хочет Visual Studio для разработки на существующей базе кода, для ее различных инструментов, и это то, к чему привыкло большинство разработчиков. Однако существующая система сборки (внутренняя разновидность Jam) очень укоренилась и не может быть изменена по ряду факторов.
Создайте проект для каждого компонента. Я сделал это, используя сгенерированное Jam описание того, какие файлы помещаются в каждую библиотеку, и превращая это в файл проекта QT. Я вызываю qmake для этого, чтобы генерировать проекты Visual Studio с «qmake -tp vc».
Отключить сборку Visual Studio. Я сделал это, изменив тип каждого исходного файла на «не участвует в сборке» (изменив каждый на)
Добавьте событие перед сборкой, которое вызывает сборку Jam.
Теперь, когда я пытаюсь собрать из Visual Studio, это работает, в том, что он вызывает Jam.
Однако я ожидаю, что Visual Studio будет думать, что проект всегда актуален, учитывая, что он фактически не отслеживает какие-либо исходные файлы для компиляции. Но он всегда устарел и должен вызывать команду pre-build перед отладкой (которая присоединяет отладчик к исполняемому файлу и работает просто отлично).
Я использовал DebugView, чтобы увидеть, что происходит, и для многих моих проектов я получаю следующее в журнале
[12900] Project '<my project's name>' is not up to date because 1 build inputs were missing.
[12900] devenv.exe Information: 0 :
[12900] up to date is missing: '<my project's location>\@ECHO'
Я искал высоко и низко, но не могу найти ссылку на @echo как на вход файла ни к чему. Кто-нибудь знает, и / или есть ли способ выяснить, почему он ищет это?
Задача ещё не решена.
Других решений пока нет …