Comments (9)
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.
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.
I see that registries such as just-install do indeed just download and run such installers.
from basis.
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.
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.
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.
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.
OK let me answer the questions one by one:
- 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.
- 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.
- If you choose Chocolatey I can ask some great people to help us with that. No worries about that part.
- I think Chocolatey packages must be maintained on Chocolatey Orgs/Repose. And the package maintainers usually keep a clone from which they send PRs.
- 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.
- 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. :))
- CPack is great I would love to learn that as well.
- 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.
@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)
- 3.3.1 Release? HOT 3
- DEPENDS_MATLAB_DIR problem (perhaps backward compatibility issue) HOT 8
- Installing externally supplied headers in nonstandard directories via basis HOT 8
- How do you want to solve this issue? HOT 1
- Compilation error when compiling with ITK enabled in testdriver-itk.hxx HOT 2
- Compilation error building BASIS 3.3.1 with CMake 3.9 HOT 1
- Error Bootstrapping HOT 8
- Unable to compile BASIS in windows 10 HOT 3
- CUDA with BASIS HOT 1
- Unable to call Subproject from toplevel project HOT 6
- Top-level CMakeLists.txt must contain explicit project() command
- basis for MASS-1.1.0 HOT 2
- Compiling on MSYS2 using MinGW-w64 compilers HOT 3
- MSVC Pthread issue HOT 5
- Problem with .in files HOT 3
- problems installing MASS HOT 1
- hardcoded /usr/bin/python in basisproject HOT 1
- FindPythonModules does not work with Python3
- basisproject create does not create project folder
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from basis.