Open ClausKlein opened 3 weeks ago
This would be great. @ClausKlein would you be willing to contribute something like this?
Sure, I would like to help.
Thanks! Feel free to create a PR or throw some ideas here. Let me know if there's anything I can do to help.
Do you know the WindowsToolchain?
I would like to use them for windows CI build with ninja
.
This builds quite faster and makes it even more easy to setup a cmake workflow preset
for windows.
Why does this project need a runtime dependency? I think I need to hear some more concrete situations where runtime dependencies are required or at least clearly superior to other options.
Note that this project is intentionally not an educational project to teach CMake [1]. It is intended to assist a reasonably experienced C++ engineer to start developing a standard library proposal.
I would expect the typical proposal would have a fairly modest dependency list, frequently an empty one, but maybe I am too optimistic.
[1] Jason Turner's https://github.com/cpp-best-practices/cmake_template is more in line for those goals.
Why does this project need a runtime dependency? I think I need to hear some more concrete situations where runtime dependencies are required or at least clearly superior to other options.
This is a fair question. I would imagine something the linear algebra proposal would have a runtime dependency on blas. The, now defunct, 2d graphics proposal would have a runtime dependency on cairo IIRC.
Do you know the WindowsToolchain?
I was unfamiliar with that. Thanks for pointing it out!
My understanding is that most professional Windows developers use Visual Studio, but I could be out-of-date.
My understanding is that most professional Windows developers use Visual Studio, but I could be out-of-date.
Yes and No, many developers I know use also qt-creator, or clion
, but not on CI, it is to slow.
This toolchain also supports clang-cl with ninja
. (clang-19
is included in Visual Studio 2023
, and cmake workflows
are supported too)
I took a look at the ISO Cpp 2024 developer survey and this is the breakdown for primary IDE/Editor used:
I created this thread to start a conversation on what our preset list should be.
I think to support most Windows C++ developers, we need a Visual Studio preset which is tested as part of CI. That doesn't preclude using WindowsToolchain in addition in our CI matrix that surfaces windows issues on PRs more quickly.
I would imagine something the linear algebra proposal would have a runtime dependency on blas. The, now defunct, 2d graphics proposal would have a runtime dependency on cairo IIRC.
Sure, but this library doesn't need a runtime dependency. I would think less is more when it comes to getting started on a new library.
Of course, I would support someone documenting the relevant steps to add a dynamic dependency. Or better yet, someone working on a proposal that benefits from a dynamic dependency.
Maybe a fmt
vcpkg dependency for testing just because?
I forgot gtest is a test dependency.
I actually don't really think we need package manager, besides Google Test, all current projects are dependency-free.
all current projects are dependency-free No, that is not true. See https://github.com/beman-project/net29/blob/cb731f8bda0d964011eab0cb0c5e21ee2bbd7928/CMakeLists.txt#L17
subproject
with FetchContent or with ctest --test-and-build
ctest --test-and-build usage example. ;-)
An STATIC, SHARED buildable library should be created, not only a simple header only (INTERFACE).
It should also export only it public interface!
See too https://crascit.com/2019/10/16/cppcon-2019-deep-cmake-for-library-authors/