-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extend CI workflow #13
Comments
As for the desirable compilers, I'd like to see at least Clang, GCC and the MSVC compiler as well. As for its corresponding versions, I'd like to see an older one and a newer one. The old travis configuration compiled the tests with clang version 7.0.0 (tags/RELEASE_700/final) and gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609. I think it would be nice to compile the tests with even older compilers; one that at least supports C++11 and a configuration where the tests gets compiled with the most recent compilers, so we have some sort of "best of both worlds" situation. I think it would also be nice to see that C++11, 14, 17 and 20 can get tested.
I give you complete freedom in that, CMake and CI are not my strongest skills. I think you know better than me what's best practice for CMake and CI terrain. |
Hmm, so the library itself has to be built with specific versions of compilers, but the tests aren't. CXX=clang++-7 cmake -S . -B build/lib
cmake --build build/lib
cmake --install build/lib
cmake -S tests -B build/tests -D TEST_INSTALLED_VERSION:BOOL=YES # no CXX passed
cmake --build build/tests
cd build/tests && ctest Since 2 compilers in one CMake run can't be used, the library must be installed. |
Sorry, I meant the build and the tests must be made with GCC, Clang and MSVC. These three compilers must contain an old and a new(er) version. The reason for that, by the way, is because in the past, I have had no problems building with the latest compiler version locally, but the older compiler versions sometimes suddenly gave a build error (in the former CI, that used Travis). |
Alright, could you make a PR for the CI tweaks you made so far? Then I can try to fix these issues. Also, during the time I was reproducing this error, compiling with \x86_64-w64-mingw32-gcc-4.8.0-win64_rubenvb, I get an error regarding ref-qualifiers for member functions:
I think this is an error on PortabilityThe library is highly portable and relies only on a small set of C++11 features:
These are available since GCC 4.8, Clang 3.0 and MSVC 19.0 (2015). For older compilers use {fmt} version 4.x which continues to be maintained and only requires C++98. This is all so very confusing. PS: Just found out that: https://akrzemi1.wordpress.com/2014/06/02/ref-qualifiers/ Ref-qualifiers in your compilerDoes your compiler support ref-qualifiers? The first proposal for rvalue references was submitted on 2002 (N1377), whereas the first proposal for member function ref-qualifiers was submitted 3 years later, on 2005 (N1784). This lag is also reflected in compiler support of these features. The following table summarizes the state as I know it:
I think I'll need GCC 4.8.1 PSPS: I've created an issue regarding this aswell on the library {fmt} |
Any idea what the Position Independent Code requirement could be about? Note: you might want to create a |
Whoops, closed PR per accident. I've read that this I'll create a development branch, good point. https://github.com/MarcDirven/cpp-lazy/tree/dev |
The issue closing was intentional with the inclusion of specific terms in the PR description, eg Regarding |
Right, I'll close this for now. I've also asked {fmt} what's up with the |
Right now the CI workflow only runs on Ubuntu and whatever default compiler it comes set up with.
I'd like to get some feedback on what are desirable compilers and what version(s) of them would you like to have running in CI?
Also, if the CI workflow will be extended to many OSs and compiler versions, I believe that only a single job should be dedicated to running tests with the default compiler, where the library is installed and imported using
find_package
.The text was updated successfully, but these errors were encountered: