Как надежно обнаружить собственную сборку Windows при кросс-компиляции с MXE?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как надежно обнаружить собственную сборку Windows при кросс-компиляции с MXE?

Сообщение Anonymous »

Я работаю над сборкой Alembic с использованием MXE, где моим хостом является Linux (Ubuntu работает под управлением WSL в Windows), а целевой — Windows.

Код: Выделить всё

#if defined _WIN32
#include 
#endif
Это отлично работает при компиляции в Windows. Однако при кросс-компиляции с помощью MXE _WIN32 и _WIN64 определены, даже если хостом является Linux, поэтому не существует и сборка завершается с ошибкой. Удаление этих проверок #if и их содержимого позволяет выполнить сборку успешно.
Сначала я просмотрел ответ StackOverflow: Существует ли макрос компилятора для обнаружения Windows?, который предлагает использовать _WIN32. Но при кросс-компиляции MXE _WIN32 ненадежен, поскольку он указывает только на целевой объект Windows, а не на собственный хост Windows.
Вопрос:

Существует ли макрос препроцессора, переменная CMake или другой метод для надежного определения собственной сборки Windows по сравнению с целью кросс-компиляции?
Это позволит таким проектам, как Alembic, включать заголовки Windows только тогда, когда они действительно доступны, избегая сбоев кросс-компиляции. Для более подробной информации, вот конкретная проблема, с которой я столкнулся:

Подробнее здесь: https://stackoverflow.com/questions/798 ... g-with-mxe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»