Cmake заметки.

После того как cmake научился для Qt5 автоматически "мокать" необходимые заголовки многие разучились это делать руками. А это иногда нужно.
Вот например, есть у вас в одном проекте класс с одинаковым именем, но в разных пространствах имен (и в разных каталогах, разумеется). И не говорите, что так не бывает. Еще как бывает.
Так вот, стандартная опция
set(CMAKE_AUTOMOC ON)
будет генерить файлы с одинаковыми именами в каталоге сборки и обязательно приведет к ошибке.
Что делать? Мокать файлы самому. Для этого.

  1. Установим set(CMAKE_AUTOMOC OFF)
  2. Определим переменную header set(header ..... ) в которой перечислим необходимые для moc заголовочные файлы.
  3. Скажем qt5_wrap_cpp(moc ${header})
  4. В add_library добавим ${moc}
После этих манипуляций cmake будет рад в каталоге сборке создать внутренние служебные каталоги с созданными moc-файлами. Конфликтов имен при такой сборке не будет.


Популярное

Надежды юношей питают.

К вопросу об организации оркестратора кластера в деле бесшовного ввода новых версий Kalpa-системы.