CMake игнорирует файл цепочки инструментов. Как получить вывод debug / error?

#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. Это ответ, который мне действительно нужен.