#cmake #cross-compiling
#cmake #перекрестная компиляция
Вопрос:
В настоящее время я пытаюсь использовать CMake для кросс-компиляции. Однако CMake, похоже, игнорирует цепочку инструментов, указанную
cmake -DCMAKE_TOOLCHAIN_FILE=my-toolchain.cmake .
или
cmake . -DCMAKE_TOOLCHAIN_FILE=my-toolchain.cmake
Если я опущу параметр CMAKE_TOOLCHAIN_FILE, будет создан точно такой же Makefile. Кроме того, если я намеренно указываю неправильное имя файла или вставляю ошибки синтаксиса и пути в файл цепочки инструментов, CMake также не беспокоится о жалобах.
Есть ли способ получить больше выходных данных ошибок / отладки во время выполнения CMake? Единственный вариант, который я смог найти, это «—debug-output», что в моем случае не очень полезно.
Ответ №1:
Моя ошибка. CMake всегда восстанавливал существующее дерево сборки. Путем удаления CMakeCache.txt в каталоге сборки CMake вынужден сгенерировать новое дерево сборки и больше не игнорирует параметр CMAKE_TOOLCHAIN_FILE. См. Часто задаваемые вопросы CMake.
Комментарии:
1. Если вы вносите изменения в файл цепочки инструментов, вы всегда должны начинать с совершенно пустого дерева сборки. Если вы точно не знаете, на какие записи кэша влияют изменения вашего файла цепочки инструментов, и они «безопасны» для инкрементной перестройки, вам следует предположить худшее: все должно быть перестроено при изменении файла цепочки инструментов…
2. Поистине ДЬЯВОЛЬСКИЙ. Я знал, какие переменные я «исправлял», но мои исправления не работали, потому что они поступали из кэша. Я искал файл с ошибочной настройкой и специально удалил его.
3. @ DLRdave есть ли какие-либо изменения в моей сборке cmakelists.txt тоже подходит для этого?
4. Это ответ, который мне действительно нужен.