Не парень cmake ... и я не совсем понимаю подход cmake к компиляции функций здесь. Но в целом в C ++ мы теперь используем макросы тестирования функций для обнаружения наличия функций. Вы ищете специально для __cpp_lib_to_chars
.
Я думаю, что вы хотите требовать компиляции этой программы:
#if __has_include(<version>)
# include <version>
#elif __has_include(<charconv>)
# include <charconv>
#else
# error "neither <version> nor <charconv> available to test"
#endif
#ifndef __cpp_lib_to_chars
# error "tochars not implemented"
#endif
Что может быть обобщено на что-то, что вы может configure_file()
для произвольной библиотечной функции (просто вытащите имя заголовка и имя макроса и, возможно, также проверьте, имеет ли макрос минимальное требуемое значение).
В любом случае, если вы try_compile()
получите исходный файл, вы, вероятно, получите желаемое поведение?