Как проверить, является ли это 32/64 битной ос в файле automake?

Я хочу проверить, является ли используемая операционная система 32-битной или 64-битной внутри файла automake (.am).

Autoconf должен выполнить тест и установить флаг для Automake. Autoconf - это просто среда сценария оболочки, поэтому вам нужно только выполнить тот же тест командной строки, что и с терминала. Затем используйте AM_CONDITIONAL в Autoconf, чтобы установить флаг для Automake. Или вы можете использовать триплет хоста и установить флаг. Также у Intel-совместимых есть три варианта арок, а не два - i386 (или i686), amd64 и X32.

jww 31.10.2018 15:18

Связан ли CMake с вашей проблемой? Если нет, удалите, пожалуйста, тег cmake.

Tsyvarev 31.10.2018 15:45
0
2
380
1

Ответы 1

configure обычно довольно хорошо определяет, на какой ОС / архитектуре он работает, и предоставляет эту информацию через несколько макросы: AC_CANONICAL_BUILD, AC_CANONICAL_HOST и AC_CANONICAL_TARGET.

Конечный пользователь configure может отвергнуть это предположение, добавив флаги к вызову configure. Определение того, что такое «сборка», «хост» и «цель», также можно найти по этой ссылке.

Я не уверен, о какой ОС или ЦП вы заботитесь. Машина сборки - это место, где вы запускаете компиляцию программного обеспечения. Это может быть то же самое, что и хост-машина, на которой выполняется вывод компиляции сборки. Думаю, тебе небезразличен хозяин, так что ...

configure.ac

...
AC_CANONICAL_HOST
HOST_OS=""
AS_CASE([$host_cpu],
        [x86_64|aarch64*|mips64*|ppc64*|sparc64],
        [
            HOST_OS="64"
        ],
        [i?86|arm*|mips*|ppc*|sparc],
        [
            HOST_OS="32"
        ])

AC_SUBST([HOST_OS])

Makefile.am

foo_CPPFLAGS = -DHOST_OS=$(HOST_OS)

Это не помогает определить, является ли MIPS, Sparc, PowerPC или любая другая несовместимая с Intel система 32- или 64-разрядной.

ndim 04.12.2018 23:30

Другие вопросы по теме