Russian Qt Forum
Ноябрь 24, 2024, 22:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: CMake 2.6-patch4  (Прочитано 18184 раз)
asvil
Гость
« Ответ #15 : Август 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-цели для компиляции/выполнения теста:
Код:
# Добавляем тест
add_test(NAME testqstring COMMAND QtTest)
# Добавляем цель для вызова созданного теста с зависимостью от бинарного файла выполняющего тестирование
# Вместо QtTest может быть несколько целей для создания программ-тестов
add_custom_target(check DEPENDS QtTest)
# Задаем параметры для тестирования
# ctest --help
# -V verbose mode
# -VV extra-verbose
# --output-on-failure verbose on test fail
set(CTEST_ARGUMENTS --output-on-failure)
# Добавляем команду, которая будет выполнятся после создания make-цели тестирования
add_custom_command(TARGET check POST_BUILD COMMAND ${CMAKE_CTEST_COMMAND} ${CTEST_ARGUMENTS} QtTest)
Используем так:
Код:
make check
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #16 : Август 22, 2010, 22:18 »

в принципе, достаточно вот так:
Код:
set( CTEST_ARGUMENTS --output-on-failure )
add_custom_target( check )
add_custom_command( TARGET check POST_BUILD COMMAND ${CMAKE_CTEST_COMMAND} ${CTEST_ARGUMENTS} )
тогда он прогонит ВСЕ тесты (как make test). Хотелось бы еще заменить цель test своей
Записан
Obey-Kun
Гость
« Ответ #17 : Апрель 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
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #18 : Апрель 28, 2011, 07:39 »

Это хорошо, а то такую фигню воротить приходилось.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
asvil
Гость
« Ответ #19 : Апрель 28, 2011, 09:23 »

Спасибо, обновился.
Записан
asvil
Гость
« Ответ #20 : Май 12, 2011, 12:01 »

Продолжаем всякие хитрости.

Как сделать так, чтобы debug версии билиотек и программ имели постфикс _debug?
Код:
# Для библиотек
set(CMAKE_DEBUG_POSTFIX _debug)
# Для программ
# add_executable(${PROJECT_NAME} WIN32
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "_debug")

Как найти qtplatformdefs.h?
Код:
find_package( Qt4 REQUIRED)
include_directories(${QT_MKSPECS_DIR}/default)
Записан
asvil
Гость
« Ответ #21 : Июнь 27, 2011, 19:59 »

А вообще всем нравится такой понт, как номер ревизии системы версий исходников засунутый в версию проекта.

Итак берем наш CMakeLists.txt и делаем шаги:

  1. Ищем subversion
  2. Берем оттуда информацию в переменные типа {X_*} X задаете вы сами
  3. Берем номер ревизии из переменной ${X_WC_REVISION}

Код:
# Ищем пакет Subversion
find_package(Subversion)
if(Subversion_SVN_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.svn")
        # Получаем информацию о проекте. Все переменные будут иметь префикс переданный вторым параметром
        Subversion_WC_INFO(${CMAKE_SOURCE_DIR} SciDB)
        message(STATUS "Reading revision from svn: ${SciDB_WC_REVISION}")
        set(SCIDB_VERSION "${SCIDB_VERSION}.${SciDB_WC_REVISION}")
        # Записываем данную ревизию в файл
        file(WRITE "${CMAKE_BINARY_DIR}/version.txt" ${SciDB_WC_REVISION})
else(Subversion_SVN_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.svn")
# Если ниче не получилось, то читаем ревизию из файла version.txt
        file(READ "${CMAKE_SOURCE_DIR}/version.txt" SciDB_WC_REVISION)
        message(STATUS "Reading revision from file: ${SciDB_WC_REVISION}")
        set(SCIDB_VERSION "${SCIDB_VERSION}.${SciDB_WC_REVISION}")
endif(Subversion_SVN_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.svn")

Как вы заметили я позаимствовал это из исходников SciDB.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #22 : Июнь 27, 2011, 23:07 »

а для гита?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #23 : Июнь 27, 2011, 23:09 »

А что у гита? md5? Не вариант.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #24 : Июнь 28, 2011, 08:59 »

почему бы и нет?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #25 : Июнь 28, 2011, 09:54 »

Потому, что номера ревизий в гите не последовательны.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #26 : Июнь 28, 2011, 10:15 »

и че? при разработке в свне номера ревизий тоже мало что говорят, у тебя релизы идут к примеру 10я, 115я, 1020, 1022я ревизии. Это юзеру о чем-то говорит? пожалуй нет, как и чексумма
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #27 : Июнь 28, 2011, 10:17 »

Ревизии в свн по крайней мере последовательны. То есть сразу ясно, что версия 1.0.1_r1025 вышла раньше, чем  1.0.1_r1136. В гите этого не сделать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #28 : Июнь 28, 2011, 10:21 »

ну ты же не будешь версию программы _только_ ревизией гита обозначать? Как минимум старшая версия должна указывать на бинари компатибилити библиотек программы. То есть "Мегапрога 2.1 (r1234)" смысл имеет, а "Мегапрога r100" нет
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #29 : Июнь 28, 2011, 10:23 »

Охтыжблин. У одной версии может быть множество билдов и их очередность нужно как-то разделять.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 23.