Giter Site home page Giter Site logo

Comments (9)

schuhschuh avatar schuhschuh commented on July 18, 2024 1

Thanks for the suggestion. As you seem to have looked into package managers for Windows before, are there specific ones you can suggest? Do you have an idea of the complexity of their respective build / packaging scripts? I'm rarely developing on Windows, so haven't found myself using any Windows package managers yet. There seems to be quite a variety of package managers / repositories, which isn't ideal. Are there maybe a few that would be considered a "norm"?

Would you like to maintain build scripts for such package managers in a separate repository under the cmake-basis GitHub organization?

from basis.

schuhschuh avatar schuhschuh commented on July 18, 2024 1

As an alternative, what about attaching a Windows installer file (MSI) to the GitHub release page? These could be readily created with CPack without requiring separate build scripts for different package managers. Would that be suitable as well?

from basis.

schuhschuh avatar schuhschuh commented on July 18, 2024 1

I see that registries such as just-install do indeed just download and run such installers.

from basis.

schuhschuh avatar schuhschuh commented on July 18, 2024 1

Ideally, the installer package would be created as a by-product of a CI test, e.g., using AppVeyor.

I see that Travis CI has now also an early stage Windows build environment, which favors Chocolatey for installation of required third-party libraries. That would put Chocolatey onto the short list of Windows package managers.

EDIT: Given this SO thread, seems NuGet would be more appropriate than Chocolatey for a "library". There is also a CPack NuGet Generator which could possibly be used to create a package.

from basis.

schuhschuh avatar schuhschuh commented on July 18, 2024 1

If you want to deliver BASIS as a library, which doesn't seem like a good idea to me, then Conan and Vcpkg are the most common options AFIK.

In my opinion, BASIS is a library of CMake modules. It also contains libraries for programming languages, the so-called BASIS Utilities, but these I belief are mostly unused.

The only application it contains is basisproject, but this tool was more included for convenience and I consider it non-essential. It's not what defines BASIS.

Similar to applications / libraries in other programming languages, which may depend on header files or modules from a third-party library, the same is true for BASIS. The CMakeLists.txt of the user project depends on including the CMake modules of the BASIS "library".

from basis.

schuhschuh avatar schuhschuh commented on July 18, 2024 1

Delivering a binary package is actually required for any of the so-called Windows package managers, including Chocolatey. [...]
CPack is great I would love to learn that as well.

Then I'd say let's start with CPack and try the WiX Generator and NuGet generator.

The definition of CPack variables for these generators should go in config/Package.cmake. The default settings can be found in BasisPack.cmake.

from basis.

schuhschuh avatar schuhschuh commented on July 18, 2024 1

There is a clear misconception. BASIS is not a template generator. I would indeed suggest use of cookiecutter instead of basisproject tool. Your cookiecutter template would, however, contain files that make use of the BASIS CMake modules. Think of BASIS as an extension of CMake funtionality. Just like CMake provides you with functions and a set of CMake modules written in the CMake language for the purpose of build configuration.

from basis.

Foadsf avatar Foadsf commented on July 18, 2024

OK let me answer the questions one by one:

  1. First of all, when we talk about Windows package managers we are actually referring to glorified downloader and install helpers. The situation is actually very bad. Read here.
  2. I think Chocolatey is the best and the most commonly used one. Not that I'm happy with the devs (I stopped being a Patreon while ago), but it is the least awful one. Scoop is more HomeBrew-like, but not that used. Maybe WinGet in the future, as it is developed by Microsoft directly.
  3. If you choose Chocolatey I can ask some great people to help us with that. No worries about that part.
  4. I think Chocolatey packages must be maintained on Chocolatey Orgs/Repose. And the package maintainers usually keep a clone from which they send PRs.
  5. Delivering a binary package is actually required for any of the so-called Windows package managers, including Chocolatey. None to my best knowledge can compile from source. Here in GitHub is the best place as Chocolatey can automatically pick up the latest versions.
  6. I can help you with compiling. But the more sustainable solution is that you have a virtual Windows 10 on a VirtualBox or something. Unlike Apple, Microsoft is actually very keen that people use its OS. So much for Apple becoming the evilest tech corp at the moment. :))
  7. CPack is great I would love to learn that as well.
  8. If you want to deliver BASIS as a library, which doesn't seem like a good idea to me, then Conan and Vcpkg are the most common options AFIK.

from basis.

Foadsf avatar Foadsf commented on July 18, 2024

@schuhschuh maybe you can write a blog post or something explaining the differences between BASIS and other template generators like CoockieCutter?

from basis.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.