Поскольку вещь WIN32
является такой фундаментальной частью CMake, я предполагаю, что в этом есть нечто большее, чем то, что вы упоминаете.
Вы делаете чистую проверку своего кода или просто копируете целый каталог в Linux? Если у вас есть все файлы сборки CMake, кэшированные из сборки Windows, может быть (может быть, просто!) Что-то проникло туда и «определяет» себя как WIN32 в Linux?
Вы уверены, что именно эта строка, а не что-то еще, вызывает ссылку на беспризорную Win-библиотеку? Может быть, попробуйте MESSAGE(STATUS "I am here")
строку в IF(WIN32)
просто чтобы убедиться.
Вы уверены, что ошибка вызвана связыванием этой библиотеки? Я могу видеть опечатку в вашем скрипте, это должно быть IF(CMAKE_COMPILER_IS_GNUCXX)
- у вас есть дополнительный X там. Возможно, вы не связываете себя с тем, что вы есть, и поэтому оно терпит неудачу.