Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: brunt от Июль 06, 2010, 09:16



Название: QtCreator + CMake
Отправлено: brunt от Июль 06, 2010, 09:16
есть задача перевести довольно большой проект на систему сборки CMake, только проблема в том что при открытии CMakeLists.txt открываются все файлы проекта не сортированные и moc-файлы. Прилагаю скриншот, если кто знает как все это организовать в приличном виде отпишитесь плиз


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Июль 06, 2010, 09:41
Файлы в  CMake-based-проекте креатор не сортирует по типа (заголовочные, исходники, формы, etc), если вы именно эту сортировку имеете в виду.

По поводу отображения moc_* -- убейте файл настроек прокета CMakeLists.txt.user и переоткройте  cmakeLists.txt, и в на первом шаге (Build location) укажите ему каталог сборки не в оснвоной папке проекта (где у вас  cmakeLists.txt лежит) а например в $project_name/qtcreator-build -- сгенеренные  moc'ом файлы не должны после этого "мозолить  глаза".


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 01, 2010, 16:59
Вопрос на ту же тему. Есть CMAKE-проект, состоящий из общего каталога (без кода) и его подкаталогов (с кодом). Когда я открываю этот проект в QtCreator, из файлов CMakeLists.txt виден только файл корневого проекта, а файлы CMakeLists.txt подпроектов не показываются. Это так и должно быть?


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Ноябрь 01, 2010, 17:09
Какая у вас версия qtCreator и ОС? Сейчасглянул у себя в Linux --  Креатор 2.0.92 (2.1-бета) отображает и корнневой  CmakeLists.txt и все "подчинённые".


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 01, 2010, 18:26
QtCreator 2.0.1, Windows 7. Возможно, я что-то неправильно указал в CMakeLists.txt, только начинаю разбираться с CMake-ом. У меня пока структура того, что получается, далека от идеала. Почему-то в дереве в проект оказалась включена папка Program Files\<путь к модулям CMake> с несколькими модулями оттуда, которые я, притом, не использую.
Код:
cmake_minimum_required(VERSION 2.8)
add_definitions(-DUNICODE -D_UNICODE)

set(PROJECT solution)

project(${PROJECT})

set(COMMON_LIBRARY common)

set(DEVICES
device1
device2)

set(PROGRAM app)

# add devices
foreach(DEVICE ${DEVICES})
        add_subdirectory (../${DEVICE}/build ../bin/${DEVICE})
endforeach()

# add common
add_subdirectory(../${COMMON_LIBRARY}/build ../bin/${COMMON_LIBRARY})

# add program
add_subdirectory(../${PROGRAM}/build ../bin/${PROGRAM})
Как-то так выглядит корневой CMakeLists.txt


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Ноябрь 01, 2010, 18:45
Каталог common лежит уровнем выше, чем  CMakerLists.txt? Если так, то возможно причина в этом. Опишите плз, струткруру каталогов этого проекта.


Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 01, 2010, 18:47
Собираете чем? У меня cmake+креатор+msvc не работали также (пустой проект). С мингвой всё было ок.


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 01, 2010, 18:53
2 DOOMer да, выше. там в каждом каталоге (включая и корневой) есть папка build, и уже в ней находятся CMakeLists.txt и то, что ещё им надо (типа автоматически сгенерированных списков исходников).

2 Авварон msvс.


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Ноябрь 01, 2010, 19:00
2Varan
Возможно я ошибаюсь, но  cmake  вроде не любит когда файлы "подпроектов" расположены  вне каталога с главным  CMakeLists.txt (пробовал как-то организовать подобное -- ничего путного не ывшло). Кстати, если для сборки используется msvc, зачем вам креатор?


Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 01, 2010, 19:17
Ну походу креатор не понимает такой связки:(

DOOMer
А что, студия позволяет открывать симейк проекты?)


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Ноябрь 01, 2010, 19:22
Нет, но CMake умеет на основе своих проектов (CMakeLists.txt) генерить проекты для студии)


Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 01, 2010, 20:36
Это я знаю, но профит в чем? Проект также фиксим ручками, половина фичей не работает. Не проще консольный msvc компилер+студия для просмотра текстов?


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Ноябрь 01, 2010, 20:52
Наверное проще для кого-то работать именно со студийным проектом/солюшеном, чем руками править CMakeLists, я не знаю, т.к. сам  не использую студийный компилер (и соответсвенно студию). .Но если в  KitWar решили это сделать, то наверное кому-то было нужно).



Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 01, 2010, 21:33
так правка сгенеренного проекта для студии вроде никак на симейлистс не отображается, не?


Название: Re: QtCreator + CMake
Отправлено: DOOMer от Ноябрь 01, 2010, 23:39
Скорее всего нет .  Но креатор в этом отношении не особо отличается, новые файлы все равно руками в  CMakeList прописывать надо.


Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 01, 2010, 23:50
Но там-то хоть работаешь с текущим проектом и редактируешь в нем же.


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 02, 2010, 10:22
2Varan
Возможно я ошибаюсь, но  cmake  вроде не любит когда файлы "подпроектов" расположены  вне каталога с главным  CMakeLists.txt (пробовал как-то организовать подобное -- ничего путного не ывшло). Кстати, если для сборки используется msvc, зачем вам креатор?
У меня был проект VS2010, мне нужно портировать его на Qt. Поэтому файлы CMake появились уже на основе существующей конфигурации VS. А msvc используется потому, что в проекте пока куча всяких зависимостей от MS-штук.
Насчёт подпроектов - а как же мне поместить в одном каталоге несколько файлов CMakeLists.txt? Возможно, что тут дело в том, что есть каталог build, который сам по себе в проект не включен, зато в нём лежит CMakeLists.txt. Попробую перенести файл в корень проекта.

так правка сгенеренного проекта для студии вроде никак на симейлистс не отображается, не?
Есть такая хорошая штука - folders4cmake. По ней мною не найдено никакой документации на русском, постараюсь в будущем это исправить - но она вроде такое позволяет. Вроде - потому что мне пока именно это было не нужно и я не пробовал. Зато она классно сгенерила на основе .vcxproj.filters списки файлов подпроекта CMake. Ну т.е. выглядит оно классно в окошке QtCreator. Стадия "компилируется" пока не достигнута.


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 02, 2010, 10:57
Возможно, что тут дело в том, что есть каталог build, который сам по себе в проект не включен, зато в нём лежит CMakeLists.txt. Попробую перенести файл в корень проекта.

А дело было именно в этом. Заработало. Спасибо.


Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 02, 2010, 11:06
Не понял - build - это куда вы собираете? А зачем там свой CMakeLists.txt?


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 02, 2010, 11:18
2 Авварон Куда я собираю - это qtcreator-build. А build был в каждом подпроекте для удобства организации проектов, там лежали исходные сборочные файлы подпроекта - CMakeLists.txt и зависимый от него sources_list.cmake. Но, видимо, qtcreator этого не понял.


Название: Re: QtCreator + CMake
Отправлено: Авварон от Ноябрь 02, 2010, 11:44
Итог - креатор не понимает древовидных проектов с компилером msvc?


Название: Re: QtCreator + CMake
Отправлено: Varan от Ноябрь 02, 2010, 12:31
msvc тут ни при чём. msvc - это только компилятор. А мы говорим об отображении файлов в дереве проекта в IDE. Я запускал сначала CMake с генератором MinGW, было то же самое. Дело тут в том, что файлы CMakeLists.txt подпроектов лежали в таких местах, откуда IDE их не смогла отобразить. То есть подкаталог build не был частью подпроекта, а файл CMakeLists.txt этого подпроекта лежал именно в этом подкаталоге. Когда я перенёс CMakeLists.txt подпроекта из build на уровень выше - всё стало хорошо. Кстати, модуль sources_list.cmake, который содержал список файлов подпроекта, тоже стал виден в дереве QtCreator.

И ещё - я так понял, та самая директория в Program Files, о которой я писал выше, по-видимому включена из-за модулей CMake, которые оттуда берутся и используются CMake-ом.