create libcxx-version tool for getting currently used libcxx version
Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
parent
d0ccb5413e
commit
3a70a810d5
28
src/tools/libcxx-version/main.cpp
Normal file
28
src/tools/libcxx-version/main.cpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Detecting the standard library version manually using a bunch of shell commands is very
|
||||||
|
// complicated and fragile across different platforms. This program provides the major version
|
||||||
|
// of the standard library on any target platform without requiring any messy work.
|
||||||
|
//
|
||||||
|
// It's nothing more than specifying the name of the standard library implementation (either libstdc++ or libc++)
|
||||||
|
// and its major version.
|
||||||
|
//
|
||||||
|
// ignore-tidy-linelength
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
#ifdef _GLIBCXX_RELEASE
|
||||||
|
std::cout << "libstdc++ version: " << _GLIBCXX_RELEASE << std::endl;
|
||||||
|
#elif defined(_LIBCPP_VERSION)
|
||||||
|
// _LIBCPP_VERSION follows "XXYYZZ" format (e.g., 170001 for 17.0.1).
|
||||||
|
// ref: https://github.com/llvm/llvm-project/blob/f64732195c1030ee2627ff4e4142038e01df1d26/libcxx/include/__config#L51-L54
|
||||||
|
//
|
||||||
|
// Since we use the major version from _GLIBCXX_RELEASE, we need to extract only the first 2 characters of _LIBCPP_VERSION
|
||||||
|
// to provide the major version for consistency.
|
||||||
|
std::cout << "libc++ version: " << std::to_string(_LIBCPP_VERSION).substr(0, 2) << std::endl;
|
||||||
|
#else
|
||||||
|
std::cerr << "Coudln't recognize the standard library version." << std::endl;
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user