#Симптомы и возможная причина
При сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Важно проверить не только внешний признак, но и связанный компонент. Ниже приведена последовательность диагностики без необратимых действий.
#Что проверить перед изменением настроек
- Проверьте целевую архитектуру: Посмотрите генератор CMake и целевую платформу в настройках сборки; отдельно запишите архитектуру используемого компилятора.
- Проверьте саму библиотеку: С помощью штатных средств компилятора или диспетчера пакетов узнайте, для какой архитектуры собран подключаемый файл; не полагайтесь на имя папки.
#Пошаговая диагностика и исправление
- Запишите точные условия возникновенияПри сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Запишите исходную команду, версию компилятора и полный текст первой ошибки. Сравнивайте одинаковые конфигурации сборки и исходный код, чтобы исключить случайные изменения.
- Подготовьте безопасную проверкуПеред правками сохраните конфигурацию проекта и файл фиксации зависимостей. Не применяйте случайные бинарные пакеты и не отключайте проверки подписи ради сборки.
- Проверьте целевую архитектуруПосмотрите генератор CMake и целевую платформу в настройках сборки; отдельно запишите архитектуру используемого компилятора.
- Проверьте саму библиотекуС помощью штатных средств компилятора или диспетчера пакетов узнайте, для какой архитектуры собран подключаемый файл; не полагайтесь на имя папки.
- Проверьте пути поискаПросмотрите CMAKE_PREFIX_PATH, find_package и пути в настройках цели. Убедитесь, что среди них нет каталогов сторонней сборки другой архитектуры.
- Создайте отдельную папку сборкиИспользуйте новую пустую директорию сборки с правильным генератором, не удаляя исходный проект; повторите конфигурацию и убедитесь, что выбрана ожидаемая библиотека.
- Сравните результат в контролируемых условияхПовторите проверку «проверьте целевую архитектуру» и сравните её с исходным поведением: При сборке проект пытается использовать библиотеку x86 в конфигурации x64 или наоборот и сообщает о несовместимом формате объектного файла. Для точности изменяйте только одну настройку за раз; если выяснилось, что виноват другой компонент, верните неэффективные изменения.
- Убедитесь, что изменение действительно помоглоПосле исправления повторите именно исходный сценарий «CMake находит библиотеку, но подключает неправильную архитектуру» в обычных условиях использования. Проверьте, что исчезло сообщение об ошибке и не появились новые ограничения. Если результат временный, запишите, когда неисправность возвращается.
- Если не помогло — соберите сведения для поддержкиПри сохранении ошибки изолируйте минимальный воспроизводимый пример и приложите обезличенный журнал, версию инструмента и список задействованных зависимостей. Не повторяйте сбросы и изменения наугад; вместе с обращением укажите, какие отдельные проверки уже выполнены.
#Что означает результат проверки
Если после выполнения конкретного действия описанный симптом исчез, причиной вероятно было именно затронутое условие. Если ситуация не изменилась, сравните результаты с шагами «Проверьте целевую архитектуру» и «Проверьте саму библиотеку», сохранив сведения о модели и версии программы.
#Если проблема возвращается
При сохранении ошибки изолируйте минимальный воспроизводимый пример и приложите обезличенный журнал, версию инструмента и список задействованных зависимостей.