Определить порядок байтов с помощью CMake

Моя библиотека должна считывать целые числа с прямым порядком байтов (4 байта) и преобразовывать их в порядок байтов хоста для обработки. В то время как на * nix ntohl работал, под Windows использование ntohl требует использования Ws2_32.dll (Winsock).

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

Поскольку, похоже, нет стандартного препроцессора. определение порядка байтов выглядит так, как будто это необходимо определить с помощью моей системы сборки (cmake). Как лучше всего это сделать? (Мне надоело «скомпилировать тестовый файл и увидеть» типовые решения, поскольку они могут препятствовать кросс-компиляции.)

10
задан Alexis Wilke 28 May 2019 в 18:10
поделиться