I didn't know where else to post this - just my opinion and experience with this package.
VCPKG at one time was a great idea, a good package and helped windows users developing with visual studio tremendously on windows platforms.
Now, with the catering to Linux and OSX builds, everyone adding their packages with each platform, the package has become too unstable, unmanageable to way too time and resource consuming.
Many times a base package changes to accommodate a new flavor of the week Linux, a new Linux or OSX option, configuration, build or link setting is added, thus incrementing the version number, but nothing on the windows side has changed, but necessitates an almost complete recompile, and that's if the change didn't break the windows build/compile/link process.
I used several hundred of the packages and when you spend a whole day or two recompiling the packages just to perform another "git pull" to keep up to day it wants you to recompile almost your complete install again - well you get the picture.
It's hard enough to port libraries/programs to run on multiple platforms, its even harder to build and maintain a program that builds/compiles and links those programs for multiple platforms.
I for one will go back to the old way of pulling the individual sources, configuring, building, compiling and linking for win64 dynamic, as that's all I need the programs for -
Notes I would like to pass along:
Much heartaches can be eliminated using the KISS method - this package has gone way beyond this thought process.
It was nice while it lasted, but it's too much work now - being the hobby game builder, I'm spending way too much time with vcpkg and no time programming or tweaking games.
Best regards and success in your continued adventures.
Some questions:
Now, with the catering to Linux and OSX builds
Most of that just comes from CMake being able to create buildfiles for those platforms.
Suggest breaking vcpkg up into three separate packages, or eliminate OSX and Linux altogether, after all, those other platforms already have their own vcpkg like processes that do a much better job than vcpkg on those platforms - why reinvent the wheel and stick to building something that works superb with windows
Reason: Same workflow on any OS. It makes it so easy to use my windows workflow on linux and I am not a guy who uses linux a lot. Especially remembering the different linux packages managers between different distributions is a pain in my point of view. Splitting them up is also not a good idea because package versions between those different vcpkg instances will diverge and would break the above workflow. I really like and depend on the unified workflow vcpkg offers.
(I am a user of the vcpkg toolchain on windows and linux)
I personally think vcpkg could add a vcpkg-<os>-subversion flag into the control file to only require the OS to recompile the package which requires it. Currently any change to the version in the CONTROL of a package requires a recompile of the package and all dependent packages but the latter is exactly what you want to have for an update although vcpkg could an os-subersion flag to finetune it.
I see the same problem: vcpkg started as light-weight approach to simplify porting applications from Linux to native Windows. With the goal of supporting all different OSs, it has now become extremely complex to fix any problems within the set of ports without breaking something. I have been working on porting an application to Windows for weeks, had to add various ports and fix issues with others. Quite a number of changes were slowed down by the need to keep everything working on all platforms.
IMO, vcpkg should remain focused on Windows only, allowing the other OSs to continue using their native package management systems. Ideally, vcpkg should work as a simply drop-in replacement for the package manager without requiring changes to the application's build files. The elements missing for this are consistently installed Find*.cmake files and *.pc files. If these were installed by vcpkg for each port with the regular name, the application code could simply resolve its dependencies by one unified approach without having to know much about vcpkg.
I never took the linux version seriously and I also never got it to work. Since it has the same Linuxy free software quality of non-reproducability and misleading documentation.
Unfortunately all this linuxy stuff is now interfering with it's capability of being actually useful on Windows where it actually fills a gap.
There have been hiccups along the way, but things are definitely getting better the past few months - as it appears those making changes have been more considerate/conscientious of making changes and how it may affect the other platforms the package is already supporting.
Most helpful comment
I see the same problem: vcpkg started as light-weight approach to simplify porting applications from Linux to native Windows. With the goal of supporting all different OSs, it has now become extremely complex to fix any problems within the set of ports without breaking something. I have been working on porting an application to Windows for weeks, had to add various ports and fix issues with others. Quite a number of changes were slowed down by the need to keep everything working on all platforms.
IMO, vcpkg should remain focused on Windows only, allowing the other OSs to continue using their native package management systems. Ideally, vcpkg should work as a simply drop-in replacement for the package manager without requiring changes to the application's build files. The elements missing for this are consistently installed Find*.cmake files and *.pc files. If these were installed by vcpkg for each port with the regular name, the application code could simply resolve its dependencies by one unified approach without having to know much about vcpkg.