Я разрабатываю программное обеспечение на C ++ для 32-разрядной версии Windows (с использованием MSVC ++), но поскольку я хочу иметь возможность использовать свое программное обеспечение на каждой платформе, я решил использовать CMake в качестве генератора сборки.
Поэтому я все еще новичок в CMake. Из руководств по CMake я понимаю, что для кросс-компиляции кодов сначала необходимо установить на хост-платформу цепочку инструментов, имитирующую целевую платформу. Затем, используя соответствующие компиляторы C и C ++ целевой платформы, предоставляемые этой инструментальной цепочкой, CMake сможет генерировать файлы сборки и т. Д.
Теперь я хочу собрать свой код для платформы Linux (GNU / Linux) на платформе Win32. Я попытался выполнить описанную выше процедуру, используя CMake в сочетании с Cygwin и используя gcc и g ++ в качестве компиляторов. Он отлично собирал, создавал make-файлы, и когда я ввел команду «make» в терминале Cygwin, сгенерированные make-файлы были «созданы». Теперь у меня есть исполняемый файл, который, как я надеялся, будет работать на платформе Linux. Но в Linux я получаю сообщение об ошибке: bash не может выполнить двоичный файл.
Используя имя исполняемого файла командного файла, я понял, что исполняемый файл, созданный с помощью вышеуказанной процедуры, имеет тип PE32, который предназначен только для Windows.
Теперь мой вопрос: правильно ли я понимаю процедуру кроссплатформенной сборки с использованием cmake? Или мне просто нужно использовать другую цепочку инструментов Linux под Windows, чтобы получить исполняемый файл Linux ELF? Какие наборы инструментов приходят вам в голову, которые дадут мне то, что я хочу?
Большое спасибо
Setareh