Название: qbs DEFINES += Отправлено: Kurles от Июль 30, 2015, 10:25 Хочется простого: что бы в зависимости от свойств qbs Product'а добавлялись дефайны, по аналогии с qmake'овским "DEFINES +=".
пример: если установлено свойство def3 добавить деафайн DEF3 Вот одна из моих попыток: Код
тестовая программа: Код Но вместо ожидаемого результата (определены дефайны DEF1, DEF2 и DEF3) получается что дефайн DEF3 замещает предыдущие значения дефайнов. Хелп. Название: Re: qbs DEFINES += Отправлено: Kurles от Июль 30, 2015, 10:45 Придумал костыль, но что то мне кажется, что это реальный костыль.
Код Всё еще жду "православного" решения. Название: Re: qbs DEFINES += Отправлено: Пантер от Июль 30, 2015, 11:05 Как люди не извращаются, лишь бы CMake не юзать. )))
Название: Re: qbs DEFINES += Отправлено: kuzulis от Июль 30, 2015, 11:22 Код: Properties { Название: Re: qbs DEFINES += Отправлено: Kurles от Июль 30, 2015, 11:30 Код: Properties { Название: Re: qbs DEFINES += Отправлено: Kurles от Июль 30, 2015, 12:13 Неполная магия :(
Код Добавляется только один из дефайнов :( Название: Re: qbs DEFINES += Отправлено: kuzulis от Июль 30, 2015, 12:21 Значит есть какие-то ограничения или особенности.. Нашел тест в сорцах QBS:
Код: Product { В общем, разбирайся сам (или в тестах самого QBS-а,в его сорцах или в сорцах QtCreator) :) . Может это баг - а может нет... я никогда не использовал такой хитрый набор пропертей с дефайнами. UPD: Все правильно, нужно вводить свое дополнительное проперти типа: Код:
Наверно так будет работать, хотя хз.. Название: Re: qbs DEFINES += Отправлено: Kurles от Июль 30, 2015, 13:14 Фиг. Properties затирает пердыдущее значение cpp.defines.
Сделал пока по своему первому варианту, может потом что еще придумаю. с qmake подобное совсем просто делалось: Цитировать CONFIG += MODULE1 MODULE2 MODULE3 Хочется чего-то подобного...MODULE1 { DEFINES += MODULE1 HEADERS += module1.h SOURCES+= module1.cpp } MODULE2 { DEFINES += MODULE2 HEADERS += module2.h SOURCES+= module2.cpp } MODULE3 { DEFINES += MODULE3 HEADERS += module3.h SOURCES+= module3.cpp } Название: Re: qbs DEFINES += Отправлено: Авварон от Август 01, 2015, 13:19 Properties не затирает, он работает как if () else if () else, где else - то, что объявлено вне Пропертей.
Группы же работают как if () if () if() В доке это написано, кстати:) Название: Re: qbs DEFINES += Отправлено: Авварон от Август 01, 2015, 13:22 Properties не затирает, он работает как if () else if () else, где else - то, что объявлено вне Пропертей. Группы же работают как if () if () if() В доке это написано, кстати:) Как люди не извращаются, лишь бы CMake не юзать. ))) cmake не нуженНазвание: Re: qbs DEFINES += Отправлено: Kurles от Август 02, 2015, 12:47 Группы же работают как if () if () if() да, только с группами не работает (или работает не так, как ожидается) такой код:Код К глобальным дефайнам DEF3 не добавляется :( Название: Re: qbs DEFINES += Отправлено: Авварон от Август 02, 2015, 15:31 Потому что проперти, заданные в группе, применяются только к файлам в этой группе:) Это тоже написано в доке (хотя сам узнал буквально вчера)
Название: Re: qbs DEFINES += Отправлено: Kurles от Август 02, 2015, 21:00 Потому что проперти, заданные в группе, применяются только к файлам в этой группе:) Это тоже написано в доке (хотя сам узнал буквально вчера) А есть ли решение моей задачи путём, отличным от этого (http://www.prog.org.ru/index.php?topic=29130.msg213487#msg213487)?Название: Re: qbs DEFINES += Отправлено: Авварон от Август 02, 2015, 21:19 Решения короче, думаю, нет. Собственно, жс для того в qml и есть, чтобы делать сложные ф-ии.
Название: Re: qbs DEFINES += Отправлено: Авварон от Август 02, 2015, 21:25 Кстати, проскипал ваш пост с вашей задачей. Сделайте продукты статик-либы, в к-ых экспортируйте ваши дефайны и делайте Depends с кондишном от этих продуктов.
Название: Re: qbs DEFINES += Отправлено: Авварон от Август 02, 2015, 21:31 Напишите в рассылку qbs, кстати, возможно это полезная фича, делать дефайны в группе глобальными
|