You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Before submitting a bugreport about linking errors, please check this list first. If it is missing, and you're absolutely positive it should be building for the compiler of your choice, please check https://conan.compiler-explorer.com/failedbuilds.html for the logging for the failed builds. If it has an unreasonable error you cannot reproduce locally, please do submit a bug report.
Be aware that libraries are mostly built for the default std version the compiler assumes and not for any other versions (of course, anything >= C++11 should be compatible, but there might be specific examples of where ABI cross-compatibility is broken. If there's any specific use case that you would like to see supported, please make sure you supply the needed examples with any bug report you make and your motivation of why this is a common use-case.
There are always special compiler flags that break ABI compatibility between library and compiler. If there's a common use-case that you can provide, please do including motivation and examples.
CE should automatically download and add the right libraries to the command line for linking, save for some exceptions with libraries that provide extra "main" binaries (see Catch2 and Google Test)
Note that when you use the "Compile to binary" option, you will need to circumvent our feature that injects int main() {} into your code, you can do this with just a comment like // int main() {} somewhere in your code.
Unchanged: All the C shared libraries (openssl, cs50 and now also libuv) are built as usual with just one x86_64 and one x86 version
About trunk versions
Trunk version of libraries aim to build every night if there are new commits on the library branch - but this is no way guaranteed - we would ask you to please mostly just use tagged versions.
None of the libraries are rebuilt when it's the compiler's trunk that's changing, please don't send a bug report about this.
(TLDR: please use CMake and don't ignore the contents of CXX, CXXFLAGS, etc)
There's currently no support for generated header files based on the build-environment, and this is hard to make compatible with CE regardless. If you're a library developer and think you really do need these and if you can help us support it, feel free to contact us.
About Catch2
Known issue: Catch2 only really supports linking binaries from v3, and there are no working variants of earlier versions in any way. (as in, you can compile to assembly, but you can't link or run code using Catch2)
If you want the Main function supplied by this library, add -lCatch2Main to your compiler arguments
If you want the Main function supplied by this library, add -lgtest_maind to your compiler arguments
About Google Benchmark
We have a limit for 10s on execution, so your benchmarks might not always complete if you combine them all in one program. But if all fails, you can still always use https://quick-bench.com/ for this.
Even though linking and executing with libraries is new and exciting, it's not going to be lightning-fast. So be patient, and perhaps leave the automatic compiling feature off if you don't want to be interrupted while typing.
If you have an example that consistently fails to compile or execute due to time limits, let us know, maybe we can help.
Have fun executing!
The text was updated successfully, but these errors were encountered:
About the current state of library linking support
This is still mostly experimental an experimental feature, and we would like input on things that either don't work or "would be nice if".
We now try to build a couple of C++ libraries for all working compilers and for a small number of variations
You can find a complete list at https://conan.compiler-explorer.com/libraries.html
Be aware that libraries are mostly built for the default std version the compiler assumes and not for any other versions (of course, anything >= C++11 should be compatible, but there might be specific examples of where ABI cross-compatibility is broken. If there's any specific use case that you would like to see supported, please make sure you supply the needed examples with any bug report you make and your motivation of why this is a common use-case.
There are always special compiler flags that break ABI compatibility between library and compiler. If there's a common use-case that you can provide, please do including motivation and examples.
CE should automatically download and add the right libraries to the command line for linking, save for some exceptions with libraries that provide extra "main" binaries (see Catch2 and Google Test)
int main() {}
into your code, you can do this with just a comment like// int main() {}
somewhere in your code.Unchanged: All the C shared libraries (openssl, cs50 and now also libuv) are built as usual with just one x86_64 and one x86 version
About trunk versions
About submitting new libraries
About Catch2
About Google Test
About Google Benchmark
About TBB
Be kind
Have fun executing!
The text was updated successfully, but these errors were encountered: