|
08-08-2017, 04:29 PM
|
#1
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
CMake
Hi all,
I'm thinking of consolidating various cool stuff from other people's branches of Iplug, and things that I have developed separately that I haven't released yet, into the next version of WDL-OL (although it might be called something different since the scale of changes may break backwards compatibility).
The duplication script in WDL-OL is a fairly neat and convenient way of quickly starting a project, and if you know what you're doing updating isn't so bad. I like the fact that beginners have ready-made projects and layout as part of the download, but having a project generator would be great, and would mean that people can use different IDEs. I've never really been into CMake, but It seems to be more more widely used these days, and particularly powerful with continuous integration.
How do people feel about moving over to CMake? Perhaps I should leave the existing examples folder and duplicate script as an option. Cmake seems a bit daunting for beginners, and I think one of the main appeals of WDL-OL/IPlug Is that plug-in implementation is pretty simple, and IDE Projects are set up well, unlike for example the VST SDK, which often has very outdated examples.
Any thoughts?
oli
|
|
|
08-08-2017, 09:44 PM
|
#2
|
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
|
Would it help to consider someone like me? Not a programmer by any stretch but someone who can learn and definitely follow directions.
Would CMake make things more possible for me or is it just the updates where things get changed so its no longer compatible with the documentation?
Im going to go look at Cmake, not sure what it is
|
|
|
08-09-2017, 04:10 AM
|
#3
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by olilarkin
Hi all,
I'm thinking of consolidating various cool stuff from other people's branches of Iplug, and things that I have developed separately that I haven't released yet, into the next version of WDL-OL (although it might be called something different since the scale of changes may break backwards compatibility).
|
I think that more logical name would be IPlug since WDL is much more than building plugins.
Quote:
The duplication script in WDL-OL is a fairly neat and convenient way of quickly starting a project, and if you know what you're doing updating isn't so bad. I like the fact that beginners have ready-made projects and layout as part of the download, but having a project generator would be great, and would mean that people can use different IDEs. I've never really been into CMake, but It seems to be more more widely used these days, and particularly powerful with continuous integration.
|
I hate these scripts. While your clone script works great I couldn't make other mac scripts work...
I have not used CMake but I am not sure if we need it. We could make app that will generate projects with WDL and then we can constantly update and improve it since we know WDL. This shouldn't be that hard, maybe couple days of work. (how hard can it be )
Quote:
How do people feel about moving over to CMake? Perhaps I should leave the existing examples folder and duplicate script as an option. Cmake seems a bit daunting for beginners, and I think one of the main appeals of WDL-OL/IPlug Is that plug-in implementation is pretty simple, and IDE Projects are set up well, unlike for example the VST SDK, which often has very outdated examples.
|
Indeed, if you want IPlug to compete with JUCE only benefit we can bring to the table if simplicity since JUCE is beating IPlug hard when it comes to features.
|
|
|
08-09-2017, 08:37 AM
|
#4
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
not personally trying to compete with JUCE (in fact I just bought JUCE :-) and I've been using it for many projects). It's nice to have a free alternative, and there's quite a bit of code sitting on my hard drive and on other peoples IPlug forks that could be consolidated
|
|
|
08-09-2017, 08:41 AM
|
#5
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
ps do you have a more complete cairo example? e.g. with moving controls etc?
|
|
|
08-09-2017, 09:02 AM
|
#6
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by olilarkin
hat could be consolidated
|
That would be great. We all should share our forks. In that way we could all benefit from it.
|
|
|
08-09-2017, 09:05 AM
|
#7
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by olilarkin
ps do you have a more complete cairo example? e.g. with moving controls etc?
|
I could make more complete example. Tell me what you would like me to add?
|
|
|
08-09-2017, 09:51 AM
|
#8
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
just something with a few controls, sliders, displays, knobs would be cool.
|
|
|
08-09-2017, 09:52 AM
|
#9
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by olilarkin
just something with a few controls, sliders, displays, knobs would be cool.
|
OK, I will do that until end of the month.
|
|
|
08-09-2017, 10:38 AM
|
#10
|
Human being with feelings
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
|
I have used CMake a few times, but for me it does little. Then again, I usually type my own makefiles, which for my own IPlug version seem to work on every VS version so far, with little to no changes.
When using WDL-OL I just used the existing VS projects, which mostly worked fine (I believe I had to convert them to a newer VS version at some point, but no real problems there). So I'd say there is no real need for CMake.
|
|
|
08-11-2017, 06:46 AM
|
#11
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
Youlean. I tried your latest beta of loudness meter. Very impressive! I have to say the text rendering in Cairo is vastly better on windows lo dpi than juce. Noticed resizing has some issues in ableton 9 on OS X
Last edited by olilarkin; 08-11-2017 at 07:17 AM.
|
|
|
08-11-2017, 10:40 AM
|
#12
|
Human being with feelings
Join Date: Dec 2015
Posts: 331
|
CMake...offhand, I don't know what perils are in store for iLok implementers, but doesn't seem it would be fun to sort out...just a first guess.
|
|
|
08-11-2017, 10:42 AM
|
#13
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
sorry I don't understand
|
|
|
08-11-2017, 12:54 PM
|
#14
|
Human being with feelings
Join Date: Dec 2015
Posts: 331
|
Quote:
Originally Posted by olilarkin
sorry I don't understand
|
Have you implemented PACE Fusion for iLok?
|
|
|
08-11-2017, 01:14 PM
|
#15
|
Human being with feelings
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
|
Quote:
Originally Posted by earlevel
CMake...offhand, I don't know what perils are in store for iLok implementers, but doesn't seem it would be fun to sort out...just a first guess.
|
CMake is just a solution/project file generator, though. So it should be possible to later edit the Visual Studio and XCode projects to deal with whatever BS iLok requires. That wouldn't be any different compared to how to WDL/IPlug currently works, right?
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
|
|
|
08-12-2017, 09:14 AM
|
#16
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by olilarkin
Youlean. I tried your latest beta of loudness meter. Very impressive! I have to say the text rendering in Cairo is vastly better on windows lo dpi than juce. Noticed resizing has some issues in ableton 9 on OS X
|
Thanks! Text drawing is handled with freetype back end. Cairo text draw is as bad as others on windows.
Indeed there are some problem with resizing on mac in some specific hosts and I don't know how to fix it since I am really not that familiar with objective c, but I hope I will figure it out soon.
|
|
|
08-12-2017, 10:31 AM
|
#17
|
Human being with feelings
Join Date: Dec 2015
Posts: 331
|
Quote:
Originally Posted by Xenakios
CMake is just a solution/project file generator, though. So it should be possible to later edit the Visual Studio and XCode projects to deal with whatever BS iLok requires. That wouldn't be any different compared to how to WDL/IPlug currently works, right?
|
Well, I was guessing that Oli was talking about using it as such (solution/project generator), from his comments about the Python script, but when I looked at CMake, it also seems capable of more. It looked like it had the potential of making things difficult, so I was stating my concern regarding PACE Fusion.
For instance, I look at the docs..."CMake is a cross-platform, open-source make system. CMake is used to control the software compilation process using simple platform-independent and compiler-independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice." If you stop at "CMake generates...workspaces", just use that capability, that's one thing, but the other stuff would definitely be pertinent to Fusion. Not that you couldn't do it, just that a) it requires a good understanding of the Fusion system, because you'll be running outside the PACE documentation and tutorial examples, which is already tough enough, and b) PACE changes things at will.
|
|
|
08-12-2017, 10:43 AM
|
#18
|
Human being with feelings
Join Date: Jan 2017
Posts: 43
|
Quote:
Originally Posted by Youlean
Thanks! Text drawing is handled with freetype back end. Cairo text draw is as bad as others on windows.
Indeed there are some problem with resizing on mac in some specific hosts and I don't know how to fix it since I am really not that familiar with objective c, but I hope I will figure it out soon.
|
Youlean, would you be willing to elaborate on how you're displaying text in your branch? I've just been using cairo_show_text and I've noticed that the spacing between characters looks a bit off. This is on OS X 10.7 - 10.12.
MSK
|
|
|
08-12-2017, 11:20 AM
|
#19
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by MSK
Youlean, would you be willing to elaborate on how you're displaying text in your branch? I've just been using cairo_show_text and I've noticed that the spacing between characters looks a bit off. This is on OS X 10.7 - 10.12.
MSK
|
Take a look at ycairo_text class.
|
|
|
08-12-2017, 12:17 PM
|
#20
|
Human being with feelings
Join Date: Jan 2017
Posts: 43
|
Quote:
Originally Posted by Youlean
Take a look at ycairo_text class.
|
Awesome thanks. Looking at the class, only thing that isn't clear to me is how to set the font, what would the member calls look like for that?
MSK
|
|
|
08-12-2017, 12:32 PM
|
#21
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by MSK
Awesome thanks. Looking at the class, only thing that isn't clear to me is how to set the font, what would the member calls look like for that?
MSK
|
I would suggest you to use create_global_font_from_path from ycairo base and to put it in the plugin constructor, then you will be able to use ycairo text with that font in any ycairo text instance. You can also use similar method in ycairo text. You can also use font from memory but you will need to declare font in resource.h and .rc for windows.
Btw, I am on vacation so I probably won't be able to reply you anymore until I get back.
|
|
|
08-12-2017, 02:21 PM
|
#22
|
Human being with feelings
Join Date: Jan 2017
Posts: 43
|
Quote:
Originally Posted by Youlean
I would suggest you to use create_global_font_from_path from ycairo base and to put it in the plugin constructor, then you will be able to use ycairo text with that font in any ycairo text instance. You can also use similar method in ycairo text. You can also use font from memory but you will need to declare font in resource.h and .rc for windows.
Btw, I am on vacation so I probably won't be able to reply you anymore until I get back.
|
Great, I'll give it a go. Thanks Youlean!
MSK
|
|
|
08-13-2017, 07:29 AM
|
#23
|
Human being with feelings
Join Date: Apr 2008
Location: Germany
Posts: 87
|
I haven't used wdl-ol at all, yet, so I cannot comment on the current system. But in general I like CMake and think that it's becoming more and more a standard of how projects are build. So there is a +1 from my side!
|
|
|
08-19-2017, 07:01 AM
|
#24
|
Human being with feelings
Join Date: Mar 2017
Location: Halifax, NS, Canada
Posts: 11
|
I just started a job at a company that uses CMake for all of their projects - it's a godsend. I would be all for it, especially considering the amount of cross-platform hassle that comes with making plugins.
|
|
|
08-19-2017, 11:16 AM
|
#25
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Just to note, maybe if visual studio for mac gets C++ we could have same projects running on mac and windows...
Also, is it possible to use visual studio code on both platforms?
|
|
|
08-19-2017, 11:59 AM
|
#26
|
Human being with feelings
Join Date: Dec 2015
Posts: 331
|
Quote:
Originally Posted by Youlean
Just to note, maybe if visual studio for mac gets C++ we could have same projects running on mac and windows...
Also, is it possible to use visual studio code on both platforms?
|
True, that does sound seductive. However, Microsoft's motivation is to push .net, and has little motivation to further C++, particularly on the Mac. And Microsoft has a history of pulling the rug out from any Mac development support they enter into, as well as letting their Mac software lag (permanently) its Windows versions in capabilities. Relying on Microsoft for Apple success is not a good bet.
|
|
|
08-20-2017, 01:32 AM
|
#27
|
Human being with feelings
Join Date: Feb 2011
Posts: 171
|
I only used CMake a couple of times and don't have a real opinion on that but being an old Linux head I'm perfectly fine with shell scripts (in fact I'm using them all the time)
Regarding Cairo I have some widget already made (the DeeLay Plus GUI is made completely in Cairo) so I can share some cod if it's needed
BTW the biggest Cairo pain is to build it on mac...
Saverio
|
|
|
08-20-2017, 07:50 AM
|
#28
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by earlevel
True, that does sound seductive. However, Microsoft's motivation is to push .net, and has little motivation to further C++, particularly on the Mac. And Microsoft has a history of pulling the rug out from any Mac development support they enter into, as well as letting their Mac software lag (permanently) its Windows versions in capabilities. Relying on Microsoft for Apple success is not a good bet.
|
Indeed, haven't thought about that...
|
|
|
08-22-2017, 03:37 AM
|
#29
|
Human being with feelings
Join Date: Mar 2016
Posts: 234
|
Yeah, I suggest to change the name totally... IPlug is the one I'd prefer.
I would make some "order" within the folder (IPlug right now its a subfolder of WDL-OL).
Also, add some fancy "Tale" addons (such as pcmfmtcvt.h or wavread.h).
I don't have so many "commits", but some edits could be used for improve the whole project: https://github.com/Nowhk/WDL-Nowhk/commits/master
Let us know
Thanks for your nice and awesome work!
|
|
|
08-23-2017, 12:21 AM
|
#30
|
Human being with feelings
Join Date: Mar 2016
Posts: 234
|
P.S. duplicate.py works like a charm for me, I don't need any change for this
|
|
|
08-25-2017, 05:17 AM
|
#31
|
Human being with feelings
Join Date: Mar 2017
Location: Halifax, NS, Canada
Posts: 11
|
It's not really a matter of the duplicate script working correctly.
I find Xcode to be atrocious - it's like every new version breaks my stuff in some new fun way. Visual Studio isn't much better either. CMake is really simple to understand, so when things go wrong, it's pretty easy to find problems intuitively.
Doesn't it make more sense to have single universal projects rather than two different projects that are built two different clunky IDEs? And hey, if you are a fan of Xcode or VS, then you can use CMake to generate those projects for you!
This is all just me though. I know some people love Xcode and/or VS, but clearly I'm not one of them.
|
|
|
09-14-2017, 03:33 PM
|
#32
|
Human being with feelings
Join Date: Nov 2008
Location: Darmstadt, Germany
Posts: 673
|
A switch to CMake would be great! I use CMake a lot at work, so I can probably help out. In any case, I would strongly recommend using a current version of CMake, as they allow for much cleaner code than older ones (and the "but the Debian/Ubuntu/whatever LTS only has..." arguments are a red herring, as cmake is incredibly easy to build on Linux, and available as a binary on OSX and Windows).
|
|
|
09-17-2017, 10:44 AM
|
#33
|
Human being with feelings
Join Date: Nov 2008
Location: Darmstadt, Germany
Posts: 673
|
I made the beginning of an attempt over here: https://github.com/l0calh05t/wdl-ol/tree/cmake
However, the VST3 SDK seems to have changed too much for the original build system to work as well :/
|
|
|
09-17-2017, 10:50 AM
|
#34
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
awesome! thanks. I need to update for the latest VST 3 SDK, which actually uses Cmake.
I can't remember exactly what state this is in, but this branch should be merging soon:
switching to c++ 11, visual studio 2017 and xcode 8
https://github.com/olilarkin/wdl-ol/tree/vs2017
|
|
|
09-17-2017, 11:46 AM
|
#35
|
Human being with feelings
Join Date: May 2015
Location: Serbia
Posts: 654
|
Quote:
Originally Posted by olilarkin
|
I have updated VST3 projects for new SDK on my branch...
|
|
|
09-17-2017, 11:09 PM
|
#36
|
Human being with feelings
Join Date: Nov 2008
Location: Darmstadt, Germany
Posts: 673
|
Quote:
Originally Posted by olilarkin
awesome! thanks. I need to update for the latest VST 3 SDK, which actually uses Cmake.
I can't remember exactly what state this is in, but this branch should be merging soon:
switching to c++ 11, visual studio 2017 and xcode 8
https://github.com/olilarkin/wdl-ol/tree/vs2017
|
Yes, I saw that. However it does a couple of bad things like overriding the compiler flags set by the user (which you should never do for flags that can cause incompatibility like /MD vs /MT). And it doesn't have any option not to build all the tools and example plugins etc.
|
|
|
09-18-2017, 01:24 AM
|
#37
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
Could you elaborate? Not sure I agree such a bad thing. There is a constant conflict where I want to try and minimise set up for beginners as well as making it flexible for people who know what they're doing . /mt /md matching amongst different libraries was a constant source of problems for me when I was starting out. It's also really annoying if you give someone a plug-in and they don't have the visual studio runtime for your vs version
|
|
|
09-18-2017, 02:11 PM
|
#38
|
Human being with feelings
Join Date: Nov 2008
Location: Darmstadt, Germany
Posts: 673
|
Quote:
Originally Posted by olilarkin
Could you elaborate? Not sure I agree such a bad thing. There is a constant conflict where I want to try and minimise set up for beginners as well as making it flexible for people who know what they're doing . /mt /md matching amongst different libraries was a constant source of problems for me when I was starting out. It's also really annoying if you give someone a plug-in and they don't have the visual studio runtime for your vs version
|
Silently replacing the user's setting (in CMAKE_*_FLAGS_*) by something different will break other projects that want to build your library as a subproject. Even if used as a library, the user will be forced to use the same settings, or edit the CMakeLists.txt of your library. This is absolutely a bad thing.
At the same time, I do agree that having "sane" defaults for beginners/ease of use does make sense. The best way I have found so far, is to set the CMAKE_*_FLAGS_*_INIT variables in a CMAKE_USER_MAKE_RULES_OVERRIDE script. This allows the user to set the flags without them being overwritten, and won't break use as a subdirectory.
I just added this to my fork.
|
|
|
09-18-2017, 03:54 PM
|
#39
|
Human being with feelings
Join Date: Apr 2009
Location: Berlin, Germany
Posts: 1,248
|
Quote:
Originally Posted by l0calh05t
Yes, I saw that. However it does a couple of bad things like overriding the compiler flags set by the user (which you should never do for flags that can cause incompatibility like /MD vs /MT). And it doesn't have any option not to build all the tools and example plugins etc.
|
was that VST3SDK or my vs2017 branch? think i got confused
|
|
|
09-18-2017, 06:52 PM
|
#40
|
Human being with feelings
Join Date: Dec 2009
Location: Oblivion
Posts: 10,271
|
Out of curiosity, did you make some plugins for Buzz back in the day? I associate your name with it for some reason.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 04:05 AM.
|