[Qbs] Unexpected behavior of MSVC generator

Denis Shienkov denis.shienkov at gmail.com
Sun Feb 17 19:10:32 CET 2019


 > For c++ - yes. Imagine a pure javascript rule that doesn’t invoke any 
«compiler» (like cl or javac) but converts some input to output using 
qbs itself. How that custom rule would like?

But we speak about c/c++ :)

 > What are pros?

Pros are than I can use then a generated 'native' project on hosts 
without of QBS (just use that 'native' IDE && tools)!  F.e. using a 
'native' debugger and etc.

 > For now you’re just saying that QBS behaves different from CMake.

Nono. I say that QBS's generator behavios is strange for me. Because I 
expect that it will generate a 'native' project for a target tool.


17.02.2019 0:32, Иван Комиссаров пишет:
>
>> 16 февр. 2019 г., в 19:04, Denis Shienkov <denis.shienkov at gmail.com 
>> <mailto:denis.shienkov at gmail.com>> написал(а):
>>
>>
>> Why is it a very challenging task?
>>
>> It is enough just to parse the QBS project, to take a compiler flags, 
>> architectures,
>> defines and so on, and to create the MSVC project using that info. 
>> And then the
>> Visual Studio will invoke all required stuff 'as usual' using own 
>> resources.
>>
>
> For c++ - yes. Imagine a pure javascript rule that doesn’t invoke any 
> «compiler» (like cl or javac) but converts some input to output using 
> qbs itself. How that custom rule would like?
>
>>
>> Yes, of course, generating of the Qt-based project will cause some 
>> difficulties
>> (due to MOC and etc)... But for non-qt projects it should work.
>>
>> PS: Besides, the Qt MSVC addon and the CMake solves it anyway... Why 
>> QBS can't? :)
>>
>
> It can. But when choosing 2 ways of doing same thing, you write down 
> pros and cons and compare those ways. The cons are - it’s harder to 
> implement the proper generator than the fake one (simply because 
> «proper generator» will include the «fake» one for the case I 
> mentioned above). What are pros?
>>
>>
>> > What’s the point of implementing a rule for cpp files directly in 
>> the solution and not implementing it for other cases? I don’t see any 
>> use cases.
>>
>> I'm don't understand a bit, what do you mean here?
>>
> What I am trying to tell is that current approach may not be perfect, 
> but it works. Unless you can say what’s wrong with it. You need to 
> describe what’s wrong and prove that it can’t be fixed due to the 
> chosen approach. For now you’re just saying that QBS behaves different 
> from CMake. Well, this is not a new information=))
>
>> UPD: I'm ask all this question, because I'm doubt: is it makes sense 
>> tries to implement the generators (to spent a time) for a 
>> "bare-metal" stuff... e.g. to generate the projects for IAR, Keil, 
>> Atmel Studio and etc? Or QBS is dead, and we need to make tries to 
>> use CMake for that cases (but I'm don't know and don't like CMake)? 
>> It is a main dilemma! :)
>>
>
> It’s open source now. If personally you need this feature, contribute it.
>
>> BR,
>>
>> Denis
>>
>>
>> 16.02.2019 20:14, Иван Комиссаров пишет:
>>> I can comment. If you want a real generator, you should use cmake=)
>>>
>>> Being serious, it is not a recursion, it is a proxy - solution is the proxy for the IDE to call the build tool (which is QBS).
>>> Creating a «proper» solution that invokes compilers directly is a very challenging task… Imagine you have a custom (not the *.cpp -> *.o) rule for generating some files with a bunch of JS code. How are you going to invoke this code? Well, you probably would like to call QBS… But if you’re calling it for *some* cases why not call it in *all* cases and save some time?
>>>
>>> What’s the point of implementing a rule for cpp files directly in the solution and not implementing it for other cases? I don’t see any use cases.
>>>
>>>> 16 февр. 2019 г., в 16:10, Denis Shienkov<denis.shienkov at gmail.com>  написал(а):
>>>>
>>>> Hi all,
>>>>
>>>> It was surprised for me, that a generated MSVC solution file has
>>>> a build commands which are calls the QBS to build the generated
>>>> MSVC solution... It is recursion!!! o_O
>>>>
>>>> WTF? But it has not a sense!
>>>>
>>>> If I want to build a project using the QBS, then I know that I
>>>> will use the QBS!
>>>>
>>>> But when I want to generate the MSVC project, then I will expect
>>>> that the QBS will generate the 'native' MSVC solution, which I
>>>> will use in the Visual Studio IDE on a host without of the QBS!
>>>>
>>>> Any comments?
>>>>
>>>> BR,
>>>> Denis
>>>>
>>>> _______________________________________________
>>>> Qbs mailing list
>>>> Qbs at qt-project.org
>>>> https://lists.qt-project.org/listinfo/qbs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20190217/16f1a1d1/attachment.html>


More information about the Qbs mailing list