Название: CMake 2.6-patch4 Отправлено: asvil от Апрель 15, 2010, 14:16 Заявленная переменная QT_TRANSLATIONS_DIR пуста после вызова find_package(Qt4 REQUIRED). Для исправления идем в исходники findQt4.cmake и копируем нахождение всяких директорий. Оно кстати делается с помощью вызова qmake -query.
Код: # additional qt functions А также cmake макрос для создания и компиляции файлов переводов (*.ts). Найден с помощью гугла в каком-то коммите. Немного мной доработан. lupdate вызывается рекурсивно для директорий и поддиректорий Код: # MINI HACK Код: # just insert the languages you want to support in this list Предлагаю в эту ветку рассказывать об использовании CMake в QT проектах. Название: Re: CMake 2.6-patch4 Отправлено: Ytz от Апрель 19, 2010, 21:30 О своем опыте использования Qt и CMake я написал статью в своем блоге http://www.devexp.ru/2010/01/cmake-i-qt/ (http://www.devexp.ru/2010/01/cmake-i-qt/). Кстати по CMake там же я написал еще несколько статей http://www.devexp.ru/tag/cmake/ (http://www.devexp.ru/tag/cmake/). Буду рад если информация окажется полезной.
Название: Re: CMake 2.6-patch4 Отправлено: ритт от Май 01, 2010, 19:35 ох, глупый smf не поддерживает тэги(( не закреплять же полезные посты
хочу раздел "полезности" Название: Re: CMake 2.6-patch4 Отправлено: lit-uriy от Май 01, 2010, 19:44 >>ох, глупый smf не поддерживает тэги
может какой-нибудь плагин надо доставить? Название: Re: CMake 2.6-patch4 Отправлено: asvil от Июль 01, 2010, 19:08 Продолжаем тему. С изобретением иконок в дизайне их начали засовывать в самые труднодоступные места. Засунем и мы иконку в исполняемый в win среде файл, чтобы любой "проводник" показывал нам не синюю рамку с тремя пуговицами.
В каталоге с исходным кодом проекта создаем ветку директорий share/images/application. В полученной ветке создаем будущую иконку (пример, logo.ico) и файл win-ресурсов (пример, logo.rc). Файл win-ресурсов выглядит так: Код: IDI_ICON1 ICON DISCARDABLE "logo.ico" Для cmake >= 2.8.4 Код: if(MINGW AND WIN32) Для cmake < 2.8.4 В cmake проекте: Код: #create app icon Исходная информация была взята здесь: http://www.thelins.se/johan/2006/10/cmake-qt-421-and-application-icons.html (http://www.thelins.se/johan/2006/10/cmake-qt-421-and-application-icons.html) Название: Re: CMake 2.6-patch4 Отправлено: asvil от Июль 23, 2010, 00:09 И вновь я здесь. Как сымитировать *.pri файлы используя cmake? На этом форуме я уже отвечал, что никак. Так вот я соврал. Копируем способ отсюда. Это 'subdir.cmake' файл который храниться в поддиректории, он добавляет в проект 4 файла:
Код: get_filename_component(THIS_PATH ${CMAKE_CURRENT_LIST_FILE} PATH) А это общий CMakeLists.txt Код: include("subddir/subdir.cmake") Название: Re: CMake 2.6-patch4 Отправлено: lit-uriy от Июль 23, 2010, 03:24 Филоненко Михаил, тыб привёл пример pro/pri-файлов, которые соответствуют этим CMake'овским
Название: Re: CMake 2.6-patch4 Отправлено: asvil от Июль 23, 2010, 09:23 Да. Пример *.pri файла, который имитировался:
Код: INCLUDEPATH += $${PWD} Название: Re: CMake 2.6-patch4 Отправлено: asvil от Август 18, 2010, 22:35 Да и вообще надо все 3rdparty sources помещать в отдельную папку и компилировать/подключать как статическую библиотеку. Например делаем такую иерархию директорий:
Код: project/ Код: add_subdirectory(src/3rdparty/qttoolbardialog) Код: project(qttoolbardialog) Цель qttoolbardialog экспортируется из вложенного CMake файла во внешний проект и прекрасно к нему подключается. Название: Re: CMake 2.6-patch4 Отправлено: asvil от Август 18, 2010, 23:42 Но и это еще не все.
Пресловутый qttoolbardialog, да и вообще некоторые проекты из Trolltech лаборатории грешат определениями Q_OBJECT классов в файлах реализаций (*.cpp). Так вот способ оборачивания таких Q_OBJECT: *добавить к проекту описанному в предыдущем сообщении* Код: # генерируем moc Название: Re: CMake 2.6-patch4 Отправлено: asvil от Август 19, 2010, 23:34 Продолжаем начатую тему:
как сделать add_subdirectory для всех поддиректорий 3rdparty? Код: # all 3rd party subdirectories --------------------------------------------------------- Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Август 20, 2010, 08:30 блин, тема полезная, может ее прикрепить? на вашем месте я бы вообще встроил эти "вкусности" в сам симейк и отослал его разрабам:)
Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Август 21, 2010, 18:25 а внесу-ка я свою лепту... Как создать тест, используя QtTest (на примере теста из доки - testqstring)
Код: cmake_minimum_required( VERSION 2.6 ) Название: Re: CMake 2.6-patch4 Отправлено: asvil от Август 22, 2010, 10:55 Подхватываю.
Добавляем автоматическое прохождение тестов после сборки пакета приложения. Код: enable_testing() P.S. Поторопился. Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Август 22, 2010, 11:28 да, до этого я добрался уже после написания поста и просмотра нного количества серий фильма:) Хотя это-то как раз есть в доках и проблем не возникло
только не Код: set(ENABLE_TESTING True) Код: enable_testing() у меня пока остался только 1 вопрос - как по умолчанию включить --verbose мод или --output-on-failure ? Название: Re: CMake 2.6-patch4 Отправлено: asvil от Август 22, 2010, 13:34 Оказывается, что создание целей для тестов находится в стадии feature request. Но перед тем как рассказать workaround цитирую некоторые высказывания.
Цитировать Try moving the ENABLE_TESTING() call to the top-level CMakeLists.txt, Дословно:before any calls to add_subdirectory(). Add_test() can stay where it is. enable_testing() неоходимо вызвать в самом верхнем/корневом CMakeLists.txt и перед всеми вызовами add_subdirectory() А создания тестов (add_test) можно вызывать из любого CMakeLists.txt. А вот и собственно workaround для создания make-цели для компиляции/выполнения теста: Код: # Добавляем тест Код: make check Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Август 22, 2010, 22:18 в принципе, достаточно вот так:
Код: set( CTEST_ARGUMENTS --output-on-failure ) Название: Re: CMake 2.6-patch4 Отправлено: Obey-Kun от Апрель 27, 2011, 02:08 Продолжаем тему. С изобретением иконок в дизайне их начали засовывать в самые труднодоступные места. Засунем и мы иконку в исполняемый в win среде файл, чтобы любой "проводник" показывал нам не синюю рамку с тремя пуговицами. В каталоге с исходным кодом проекта создаем ветку директорий share/images/application. В полученной ветке создаем будущую иконку (пример, logo.ico) и файл win-ресурсов (пример, logo.rc). ... Простите, что поднимаю старую тему, но в cmake недавно стало можно подключать rc-файлы напрямую как в msvc, так и в mingw: http://public.kitware.com/Bug/view.php?id=4068 Делать просто: ADD_EXECUTABLE(экзешник бла-бла-бла файл_с_указанием_на_икноку.rc) Вот переписка в рассылке cmake до того, как оно заработало в mingw: http://www.cmake.org/pipermail/cmake/2009-March/028306.html Название: Re: CMake 2.6-patch4 Отправлено: Пантер от Апрель 28, 2011, 07:39 Это хорошо, а то такую фигню воротить приходилось.
Название: Re: CMake 2.6-patch4 Отправлено: asvil от Апрель 28, 2011, 09:23 Спасибо, обновился.
Название: Re: CMake 2.6-patch4 Отправлено: asvil от Май 12, 2011, 12:01 Продолжаем всякие хитрости.
Как сделать так, чтобы debug версии билиотек и программ имели постфикс _debug? Код: # Для библиотек Как найти qtplatformdefs.h? Код: find_package( Qt4 REQUIRED) Название: Re: CMake 2.6-patch4 Отправлено: asvil от Июнь 27, 2011, 19:59 А вообще всем нравится такой понт, как номер ревизии системы версий исходников засунутый в версию проекта.
Итак берем наш CMakeLists.txt и делаем шаги: 1. Ищем subversion 2. Берем оттуда информацию в переменные типа {X_*} X задаете вы сами 3. Берем номер ревизии из переменной ${X_WC_REVISION} Код: # Ищем пакет Subversion Как вы заметили я позаимствовал это из исходников SciDB. Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Июнь 27, 2011, 23:07 а для гита?
Название: Re: CMake 2.6-patch4 Отправлено: Пантер от Июнь 27, 2011, 23:09 А что у гита? md5? Не вариант.
Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Июнь 28, 2011, 08:59 почему бы и нет?
Название: Re: CMake 2.6-patch4 Отправлено: Пантер от Июнь 28, 2011, 09:54 Потому, что номера ревизий в гите не последовательны.
Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Июнь 28, 2011, 10:15 и че? при разработке в свне номера ревизий тоже мало что говорят, у тебя релизы идут к примеру 10я, 115я, 1020, 1022я ревизии. Это юзеру о чем-то говорит? пожалуй нет, как и чексумма
Название: Re: CMake 2.6-patch4 Отправлено: Пантер от Июнь 28, 2011, 10:17 Ревизии в свн по крайней мере последовательны. То есть сразу ясно, что версия 1.0.1_r1025 вышла раньше, чем 1.0.1_r1136. В гите этого не сделать.
Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Июнь 28, 2011, 10:21 ну ты же не будешь версию программы _только_ ревизией гита обозначать? Как минимум старшая версия должна указывать на бинари компатибилити библиотек программы. То есть "Мегапрога 2.1 (r1234)" смысл имеет, а "Мегапрога r100" нет
Название: Re: CMake 2.6-patch4 Отправлено: Пантер от Июнь 28, 2011, 10:23 Охтыжблин. У одной версии может быть множество билдов и их очередность нужно как-то разделять.
Название: Re: CMake 2.6-patch4 Отправлено: asvil от Июнь 28, 2011, 11:21 Посмотрев интернеты пришел к выводу о том, что git проекта версию не так то просто сформировать. Некоторые делают версию "Имя последенго тега"."Кол-во коммитов от него".
Пока вопрос остается открытым. Однако есть еще один не менее интересный понт использовать в качестве версии Год.Месяц.День, однако кроссплатформенно получить timestamp не просто, надо писать способ под каждую платформу. Вообще пользователю не интересна версия как таковая, версия по большей части используется для обратной связи с тестировщиками. И здесь, чем быстрее по версии можно включить коммит тем удобнее. Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Октябрь 11, 2011, 20:10 Так как получить хэш гита?
Название: Re: CMake 2.6-patch4 Отправлено: Авварон от Октябрь 11, 2011, 21:41 Сам с собой веду беседу
Код: macro( get_git_revision VAR) Название: Re: CMake 2.6-patch4 Отправлено: asvil от Ноябрь 02, 2011, 16:31 Как получить текущую дату?
Взято отсюда http://projects.blender.org/scm/viewvc.php/*checkout*/trunk/blender/build_files/cmake/buildinfo.cmake?root=bf-blender (http://projects.blender.org/scm/viewvc.php/*checkout*/trunk/blender/build_files/cmake/buildinfo.cmake?root=bf-blender) Код: # Кроссплатформенно получаем дату и время и сохраняем их в переменных BUILD_DATE, BUILD_TIME соответственно |