michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
156 stars 52 forks source link

Исправления для cmake #366

Closed ssvine closed 5 months ago

ssvine commented 5 months ago

Пулл-реквест содержит следующие исправления.

  1. Для multi-config генераторов CMake, к которым относится генератор Visual Studio, не подходит использование переменной CMAKE_BUILD_TYPE, когда на её значении основывается выбор дебажной или релизной библиотеки:
  1. Фактически то же самое происходит в add_custom_command, тут приходится использовать cmake-generator-expressions, чтобы разные конфигурации получили правильные пути для копирования.

  2. В ucm_add_flags в двух случаях используется добавление флага /DEBUG, что приводит к установке переменной EBUG. Если я правильно понял, тут имелось в виду, что нужно /DDEBUG для установки переменной DEBUG.

Я проверил эти фиксы для Visual Studio, но не проверял для Ninja, которое используется в Actions. По идее, оно должно и там работать ...

ssvine commented 5 months ago

Обнаружил ещё один баг:

В target_compile_definitions попадают не только дефайны, но и опции компиляции, которые из-за этого не будут задействованы как опции, что может привести к разным ошибкам (об этом ниже).

Короче говоря, проблема в том, что target_compile_definitions может содержать только дефайны, а target_compile_options может содержать и опции, и дефайны.

Обновил пулл реквест, где отдельным коммитом раскидал опции и дефайны по разным директивам.

Проблема с опциями привела к тому, что при компиляции конфигурации Release в Visual Studio 2022 для платформы x64 получался плагин, который падал при попытке коннекта к серверу.

ssvine commented 5 months ago

Плюс ещё один фикс: удаляем флаг /TC, чтобы компиляция в CI прошла успешно.

ssvine commented 5 months ago

Последний штрих: оказалось что DLL экспортирует огромное количество (471 шт.) ненужных функций fmt и tinyxml2. Отключил их экспорт.

michaellukashov commented 5 months ago

Спасибо!