0iStalker
> потратил 3 часа, так и не смог собрать рабочий вариант SFML 3.x. На моём хелловорде готовый билд, с хоумпейджа либы, вылетает с эксепшеном, самосбор, мало того, что только статические варианты библиотеки даёт собрать
Чёт разработчики SFML совсем нюх потеряли,... чтобы DLL собрать, нужно секретный флаг в командную строку CMAKE передать,... чтобы эти DLL собрались, нужно пнуть линкер флажком /FORCE:MULTIPLE
чтобы DLL собрать, нужно секретный флаг в командную строку CMAKE передать,... чтобы эти DLL собрались, нужно пнуть линкер флажком /FORCE:MULTIPLE
Вот потому давление и скачит.
И волнуешься будет нормально после сборки работать или нет.
А такое уже не хорошо в 40+
Пора делать апгрейд :)
0iStalker
> Чёт разработчики SFML совсем нюх потеряли,... чтобы DLL собрать, нужно секретный флаг в командную строку CMAKE передать
https://www.sfml-dev.org/tutorials/3.0/getting-started/build-from… ur-sfml-build
BUILD_SHARED_LIBS This boolean option controls whether you build SFML as dynamic (shared) libraries, or as static ones.
Уж не этот ли? Этот не секретный - в доках чётко обозначен. Билд из исходников без вдумчивого чтения документации гиблое зачастую дело.
Почему в крестах до сих пор надо руками составлять команды для сборки?
=A=L=X=
> Уж не этот ли?
Да, этот, но он не выведен в публичные опции CMAKE вообще. Его нужно вводить руками (или передавать в командную строчку). Я помню, год назад где-то, собирал предыдущую мажорную версию, таргеты DLL были в проекте и всё собиралось без гвоздей и документации. Собственно, всё равно даже с этим флагом не собирается, а выдаёт 100500 ошибок линковки
>Билд из исходников без вдумчивого чтения документации гиблое зачастую дело.
Ихние релизные бинарники DLL вылетают с эксепшеном. Я бы и не брался за сборку из исходников, если бы хелловорлд запустился из коробки.
0iStalker
> Собственно, всё равно даже с этим флагом не собирается, а выдаёт 100500 ошибок линковки
Судя по описанию FORCE:MULTIPLE ты их просто подавил и работоспособность под вопросом.
Имхо ты где-то что-то сделал не так - лучше почистить все выходные папки и очень внимательно прочитать ту инструкцию по сборке.
0iStalker
> Ихние релизные бинарники DLL вылетают с эксепшеном
Если я правильно понял - это C++-библиотека.
Как следствие использовать собранные хоть объектники хоть бинарники надо строго под тем компилятором под которым они были собраны. Даже другая версия того же компилятора может сбоить - безопасна только смена минорной версии вроде бы.
0iStalker
Мне кажется, ты что-то не то делаешь.
Запустил студию, нажал "Clone repository", ввел github ссылку, оно открылось, что-то там само докачало (freetype, что-то еще), нажал Build, и все откомпилировалось без ошибок. Нажал вверху "Manage Configurations", открылся json, дописал туда "BUILD_SHARED_LIBS": "ON", Build, и опять всё без единой ошибки.
=A=L=X=
> Судя по описанию FORCE:MULTIPLE ты их просто подавил и работоспособность под вопросом.
Хелловорлд запустился
> Судя по описанию FORCE:MULTIPLE ты их просто подавил и работоспособность под вопросом.
Вообще какие-то странные сообщения,
Sleep.obj : error LNK2005: "public: static class sf::Time const sf::Time::Zero" (?Zero@Time@sf@@2V12@B) already defined in Clock.obj
SleepImpl.obj : error LNK2005: "public: static class sf::Time const sf::Time::Zero" (?Zero@Time@sf@@2V12@B) already defined in Clock.obj
при том, что в sleep.cpp нет определения sf::Time const sf::Time::Zero, оно там в качестве константы в условии применяется
Вот весь sleep.cpp
Собственно, с остальными подпроектами такая же фигня (теперь я понимаю, что и при использовании статических либ такая же ерунда, но уже при сборке хелловорлда)
=A=L=X=
> Имхо ты где-то что-то сделал не так - лучше почистить все выходные папки и очень внимательно прочитать ту инструкцию по сборке.
10 раз чистил, оно ругается на ровном месте. Даже видяшки по сборке смотрел (у них, кстати, опция BUILD_SHARED_LIBS видна в cmake-gui), я ничего не трогал, там и трогать нечего, => cmake-gui, configure, generate, открыть солюшн в студии и запустить компиляцию всего.
0iStalker
Да, ошибки странные, как будто #pragma once отвалился где то или где то был включен исходник вместо заголовка.
Может последную экспериментальную версию скачал который на винде не проверили? Попробуй стабильный что ли...
=A=L=X=
> Может последную экспериментальную версию скачал который на винде не проверили? Попробуй стабильный что ли...
>
Так я и качал стабильную https://www.sfml-dev.org/files/SFML-3.0.2-sources.zip , с офсайта https://www.sfml-dev.org/download/sfml/3.0.2/#windows
зы.
Там ещё где-то
#include <algorithm>
пропущен, для функций std::min/std::max но это мелочи.
Так я и качал стабильную
Которая стабильно не собирается.
Стабильная стабильность.
Так и не понял в чём у вас проблема. У меня собирается буквально в один клик в студии 2022, без каких-либо ошибок и даже предупреждений, примеры тоже работают.
entryway
> У меня собирается буквально в один клик в студии 2022,
А у меня в 2017 не собирается, и VS 2022 от забытого #include <algorithm> в MiniaudioUtils.cpp вообще никак не вылечит. Стабильная версия выложена на отвяжись. Что там с mingw я даже проверять не буду.
0iStalker
> и VS 2022 от забытого #include <algorithm> в MiniaudioUtils.cpp вообще никак не вылечит
Ну у меня же вылечило.
0iStalker
> Что там с mingw я даже проверять не буду.
Я в первую очередь mingw проверил. Всё компилируется, примеры запускаются.
0iStalker
> Стабильная версия выложена на отвяжись.
Я предполагаю, что дело не в стабильной, а в 2017 студии. Хотя я делал просто клон с гитхаба, да.