• 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-файлами. Конфликтов имен при такой сборке не будет.


  • Поиск по этому блогу

    Copyright (c) Oleg Shall. Технологии Blogger.