Я только что столкнулся с той же проблемой. После просмотра исходного кода CMake, исправление, которое работало для меня, было также добавить:
set( CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1 )
CMake говорит :
Это свойство реализовано только для MS-совместимых инструментов на Windows.
CMake включает эту возможность, устанавливая CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS
в каждом файле «Платформа» в <cmake install>/Modules/Platform
, который, как они знают, поддерживает это. Тем не менее, CMake не моделирует MinGW как «платформу». Вместо этого вы просто выбираете "Windows Makefile", "Windows Ninja" и др. c. и вручную установите компиляторы C / C ++ / Fortran, чтобы они указывали на компиляторы MinGW g cc. В идеале CMake должен распознавать, когда ОС Windows, а компилятор g cc, и установить это для нас, но сейчас мы можем помочь, настроив его самостоятельно.
Кстати, CMake реализует эту функцию с помощью скрытая команда cmake -E __create_def <output-def> <input-list-of-obj-files>
. Ранее я думал о добавлении пользовательского правила для запуска этой команды. Хотя он начинается с __
, он предназначен для внутреннего использования и может меняться от одного выпуска к другому.