Я написал небольшой скрипт bash (не так), чтобы генерировать мои общие файлы make-файлов. Эти make-файлы определяют архитектуру хоста в начале и создают все объекты и выходы в папке с именем arch.cmake - создать защищенный от архитектуры make-файл
это выглядит следующим образом:
uname_m = $(shell uname -m)
DETECTED_ARCHITECTURE=$(uname_m)
ifeq ($(ARCH), x86_64)
CFLAGS += -m64
LDFLAGS += -m64
endif
ifeq ($(ARCH), x86)
CFLAGS += -m32
LDFLAGS += -m32
endif
OUTPUT_DIR = $(DETECTED_ARCHITECTURE)/
OBJ_PREFIX_DIR = $(OUTPUT_DIR)objs/
Так, например, если я запускаю сделать для моего кода в моей работе ПК, он выводит все в папку с именем i686, дома в x86_64 папку, и на моей малины, в руки. Кроме того, если я делаю что-то вроде ARCH = i686 make, он правильно переопределяет обнаруженную архитектуру так, чтобы она задавала правильные параметры компилятора и выводила каталог. Окончательный вывод идет в OUTPUT_DIR, и все сгенерированные файлы .o переходят в OUTPUT_DIR/objs.
Я пытаюсь сделать что-то подобное с cmake. Я посмотрел на CMake add_custom_command/_target in different directories for cross-compilation и CMAKE output directory depending on generator architecture, но я не хочу, чтобы архитектура зависела от генератора. Я хочу, чтобы он зависел от компилирующей машины.
Например, код i в моем компьютере и скомпилируйте его. если все пойдет хорошо, я ssh к моей малине, смонтируйте папку кода с моего компьютера до малины через sshfs и скомпилируйте ее там. Поскольку все идет в другую папку (armv6l vs x86_64), конфликтов нет, и мне не нужно повторно генерировать make-файл, чистить или что-то еще.
Итак, в принципе, можно ли сказать cmake, чтобы сделать архитектуру makefile известной? Благодаря
возможно дубликат [Как определить целевую архитектуру с помощью CMake?] (Http://stackoverflow.com/questions/11944060/how-to-detect -target-architecture-using-cmake) –