Название: Qbs не жрёт подпроекты Отправлено: fisenkdima от Апрель 27, 2015, 16:10 Есть следующий проект в Qbs
Код: import qbs Код: import qbs Код: import qbs Т.е. имеется приложение и либа. Исходники расположены следующим образом: ./Game.qbs ./../StandartLib.qbs ./../StandartApp.qbs ./GUI/MainWindow.ui ./GUI/MainWindow.h ./GUI/MainWindow.cpp ./SessionModule/GameSession.h ./SessionModule/GameSession.cpp Проблема состоит в следующем. На момент начала линковки приложения, в папке сборки есть единственный объектный файл MainWindow.cpp.o (это единственный класс приложения). В то время как на деле там также должен находится ещё и файл GameSession.cpp.o (единственный класс либы), который используется в MainWindow. Иными словами, либа не компилится. Очевидно, не распознается зависимость приложения от неё. В результате я получаю ошибки следующего характера: Код: undefined reference to `GameSession::interrupt()' Что я сделал не так? (код ниже) Приложение содержит окно MainWindow (наследник QMainWindow), которое является стартовым. Код его .h-файла: Код: #ifndef MAINWINDOW_H Код: #include "MainWindow.h" Либа содержит класс GameSession Его .h-файл: Код: #ifndef GAMESESSION_H Код: #include "GameSession.h" Название: Re: Qbs не жрёт подпроекты Отправлено: kuzulis от Апрель 27, 2015, 20:12 Цитировать ... StandartLib { type: "application" ... CppApplication { type: "library" ... huh? Название: Re: Qbs не жрёт подпроекты Отправлено: Авварон от Апрель 27, 2015, 22:51 В СтандартЛибе нет ни одного файла => ничего и не собирается
Далее: Код: property string path : "" Код: FileTagger { Код: type: "library" Код: files: [path + '*.h', path + '*.cpp', path + '*.ui'] Ну и разделите всё-таки апп и либ отдельно, без наследования друг от друга. Например, сделайте CppProduct без типа, но с зависимостью от "cpp" и установкой нужных флагов. Upd: а не, в Апп файлы должны включаться из Либ. Тогда хз. Могу предположить, что оно ищет файлы не в той папке (а в "..") Upd2: короче попробуйте файлы объявить в инстансах, а не в общем коде. Upd3: всё-таки поставлю на type: "library" Название: Re: Qbs не жрёт подпроекты Отправлено: Авварон от Апрель 28, 2015, 01:08 Набросал рыбу https://github.com/ABBAPOH/qbsfish
Что не удалось сделать - завести общий файл для cpp продуктов - не компилит ничего, если вынести зависимость от cpp в продукт без типа. Из багов - не работает install под маком - походу, сломали ребята в новых версиях Название: Re: Qbs не жрёт подпроекты Отправлено: fisenkdima от Апрель 28, 2015, 04:03 Код: type: "library" <...> Upd3: всё-таки поставлю на type: "library" В яблочко. По-факту мне нужна была staticlibrary, выставил её и всё скомпилилось. А наследование работает как положено (правда, у меня Linux Mint 17). Код: files: [path + '*.h', path + '*.cpp', path + '*.ui'] Да, у такого задания файлов есть минус. Не видит файлы в подпапках. Название: Re: Qbs не жрёт подпроекты Отправлено: fisenkdima от Апрель 28, 2015, 04:04 Цитировать ... StandartLib { type: "application" ... CppApplication { type: "library" ... huh? Переменная перезаписывается. В чём проблема? |