Russian Qt Forum

Qt => Общие вопросы => Тема начата: __Heaven__ от Июль 27, 2015, 11:31



Название: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 11:31
Привет, друзья!
Хочу написать свою библиотеку для использования в разных проектах. Скорее всего, она будет динамической. А также хочу создать тесты, чтобы можно было проверять правильность работы методов.
К сожалению, я на Qt раньше не писал ни библиотеки, ни тесты.
Меня интересует следующее:
Я создал проект TEMPLATE = subdirs, в котором создал два проекта polfile и tests, структура папок:
+project
++polfile
++tests
Теперь я хочу сделать так, чтобы по нажатию на "отладка" у меня всё компилировалось и запускались тесты. Вот тут не совсем понятно, что мне нужно прописать в tests.pro в поле LIBS. Компиляторов у меня несколько, соответственно, каждый будет писать polfile в свою настроенную папку.
Прошу помочь.


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 11:32
Use CMake, Luke.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 11:33
Я боюсь CMake - никогда не работал и не совсем уверен, стоит ли начинать (много планов на изучение других инструментов)
Можно в pro файле прописать для каждого файла условия, но, быть может, есть проще путь?


Название: Re: Создание библиотеки + её тест
Отправлено: kuzulis от Июль 27, 2015, 11:42
Use CMake QBS, Luke.


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 11:43
В CMake это сделать значительно легче, не стоит его бояться. По qmake помочь не могу, ибо уже давно с ним не работаю. Извиняюсь, что оффтоплю.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 11:49
Спс. Убедили. Хотя бы попробую.
Хотел бы узнать, на сколько cmake гармонирует с Qt Creator.
Kits переключать также просто, как и в случае с qmake?
Дерево файлов отображается? Можно ли разбивать на подпроекты?


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 11:50
А ещё я обычно под виндой сижу и периодически запускаю студию для отладок


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 11:54
Креатор достаточно хорошо работает с CMake, все отображает, kits переключает.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 12:04
В мануале написано, что для использования проектов cmake я должен перед запуском qtcreator добавить в path пути к sdk и компилятору. Но у меня для mingw и msvc разные sdk...


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 12:05
Не нужно этого всего делать. В Креаторе выберешь нужный sdk.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 12:37
ещё проблема:


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 12:37
В path путь добавлял


Название: Re: Создание библиотеки + её тест
Отправлено: kuzulis от Июль 27, 2015, 12:53
Проще QBS использовать чем все эти CMake и прочие шмаки.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 13:02
QBS решит мою проблему?


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 13:21
ещё проблема:
Балда, сам же в плагинах отключил :)


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 13:28
Проще QBS использовать чем все эти CMake и прочие шмаки.
Мне его синтаксис не понравился. Плюс, с ним только Креатор работает, а CMake понимают многие IDE. Я уже пол года работаю в CLion, он уделывает Креатора.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 14:00
Не получается создать проект в qtcreator cmake.
Пишет:
Код:
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file: D:/QtProjects/untitled19/build/CMakeFiles/3.3.0/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file: D:/QtProjects/untitled19/build/CMakeFiles/3.3.0/CMakeCXXCompiler.cmake
CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting the CMake cache entry
  CMAKE_C_COMPILER to the full path to the compiler, or to the compiler name
  if it is in the PATH.


CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting the CMake cache entry
  CMAKE_CXX_COMPILER to the full path to the compiler, or to the compiler
  name if it is in the PATH.


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.3/Modules/CMakeMinGWFindMake.cmake:22 (message):
  sh.exe was found in your PATH, here:

  C:/Users/dbabkov/AppData/Local/Programs/Git/bin/sh.exe

  For MinGW make to work correctly sh.exe must NOT be in your path.

  Run cmake from a shell that does not have sh.exe in your PATH.

  If you want to use a UNIX shell, then use MSYS Makefiles.

Call Stack (most recent call first):
  CMakeLists.txt:1 (project)

-- Configuring incomplete, errors occurred!
Кто задаёт компилятор?


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 14:07
У тебя правильно настроен Kit?


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 14:15
На мой взгляд, да
По крайней мере, я им собираю с помощью qmake
Кстати, в комбобоксе generator у меня 4 строчки


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 14:17
Ну, попробуй в PATH добавить.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 14:21
QBS тоже пока не отметаю. Как его прикрутить к креатору? Обычное копирование содержимого qbs-windows-x86-1.4.1 в папку креатора 3.4.2 based on Qt 5.5.0 (msvc 2013, 32bit) ничего нового не дало. Плагин qbs так до сих пор погашен


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 14:24
Ну, попробуй в PATH добавить.
Код:
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file: D:/QtProjects/untitled22-build/CMakeFiles/3.3.0/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file: D:/QtProjects/untitled22-build/CMakeFiles/3.3.0/CMakeCXXCompiler.cmake
CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting the CMake cache entry
  CMAKE_C_COMPILER to the full path to the compiler, or to the compiler name
  if it is in the PATH.


CMake Error at CMakeLists.txt:1 (project):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting the CMake cache entry
  CMAKE_CXX_COMPILER to the full path to the compiler, or to the compiler
  name if it is in the PATH.


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.3/Modules/CMakeMinGWFindMake.cmake:22 (message):
  sh.exe was found in your PATH, here:

  C:/Users/dbabkov/AppData/Local/Programs/Git/bin/sh.exe

  For MinGW make to work correctly sh.exe must NOT be in your path.

  Run cmake from a shell that does not have sh.exe in your PATH.

  If you want to use a UNIX shell, then use MSYS Makefiles.

Call Stack (most recent call first):
  CMakeLists.txt:1 (project)

-- Configuring incomplete, errors occurred!


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 14:26
__Heaven__, если хочешь, могу через тимвьювер помочь настроить.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 14:40
Спасибо. Было бы здорово. Но на рабочем компе нет интернета. А к домашнему доберусь завтра. Если до завтра вопрос не решится, то можно вечерком попробовать, если удобно.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 15:19
Пока что вот, что сделал...
Код:
libPath = ../build
gcc: libPath = $$libPath/gcc
win32-msvc*: libPath = $$libPath/msvc
CONFIG(debug, debug|release){
    libPath = $$libPath/debug
} else: libPath = $$libPath/release


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 27, 2015, 16:08
Спасибо. Было бы здорово. Но на рабочем компе нет интернета. А к домашнему доберусь завтра. Если до завтра вопрос не решится, то можно вечерком попробовать, если удобно.
Давай тогда в личку, как соберешься.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 16:16
В дереве проекта нашёл такую штуку :)
Теперь всё норм


Название: Re: Создание библиотеки + её тест
Отправлено: kuzulis от Июль 27, 2015, 20:29
QBS решит мою проблему?

Если имеется ввиду:

Цитата: __Heaven__
Теперь я хочу сделать так, чтобы по нажатию на "отладка" у меня всё компилировалось и запускались тесты.

То - запускать тесты нужно будет по-одному, просто выбирая нужный тест из Run конфигурации.
(то-же отночится и к CMake, QMake и прочее.), ЕМНИП.

Для запуска тестов после компиляции нужно настраивать CI и прописывать что-то вроде:

CONFIG += testcase - для QMake или ничего для QBS (я правда не в курсе насчет автозапуска тестов в QBS, т.к. всегда их ручками дергаю когда мне нужно).


Название: Re: Создание библиотеки + её тест
Отправлено: kuzulis от Июль 27, 2015, 20:35
Цитата: __Heaven__
QBS тоже пока не отметаю. Как его прикрутить к креатору? Обычное копирование содержимого qbs-windows-x86-1.4.1 в папку креатора 3.4.2 based on Qt 5.5.0 (msvc 2013, 32bit) ничего нового не дало. Плагин qbs так до сих пор погашен

Ничего не надо делать - просто выбрать QBS плагин и перезапустить креатор.

Цитата: Пантер
Мне его синтаксис не понравился. Плюс, с ним только Креатор работает, а CMake понимают многие IDE. Я уже пол года работаю в CLion, он уделывает Креатора.

А мне вот, синтаксит CMake не нравится. :)

А с синтаксисом QBS все там замечательно и удобно и проще некуда...

Тем более, если нужно линковать разные библиотечки, то делаем просто:

Код
Java
Depends { name: "MyCoolLib" }
 

и сам QBS разрулит все пути и прочее и не нужно писать треш типа:

Цитата: __Heaven__
Пока что вот, что сделал...
Код:
libPath = ../build
gcc: libPath = $$libPath/gcc
win32-msvc*: libPath = $$libPath/msvc
CONFIG(debug, debug|release){
    libPath = $$libPath/debug
} else: libPath = $$libPath/release

А насчет того что поддерживается только в креаторе - так это не проблемы QBS-а...


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 27, 2015, 22:52
фигня какая-то... дома и qbs и cmake запустились без проблем...


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 28, 2015, 09:34
Только что переустановил qt. Устанавливал также, как и дома. В чём проблема-то?


Название: Re: Создание библиотеки + её тест
Отправлено: Пантер от Июль 28, 2015, 09:36
Возможно, он зависит от другого плагина. Попробуй все включить.


Название: Re: Создание библиотеки + её тест
Отправлено: __Heaven__ от Июль 28, 2015, 09:37
Да, так и есть