¿CMake puede detectar si necesito vincularme a libm cuando uso pow en C?

Con algunos compiladores,utilizandopow y ciertas otras funciones en un programa en C requieren vinculación am biblioteca. Sin embargo, algunos compiladores no requieren esto y generarían errores al vincular am biblioteca. Existe una situación casi idéntica para C ++ constd::thread ypthread, pero el módulo CMakeFindThreads alivia esto por completo: ¿hay algún módulo similar para libm?

¿Cuál es la mejor manera de detectar qué hacer con CMake? Esta es mi solución actual, que es menos que ideal porque hay muchos más compiladores de C que solo GCC y MSVC:

if(NOT MSVC)
    target_link_libraries(my-c-target PUBLIC m)
endif()

Esto funciona para mis propósitos, pero estoy bastante seguro de que hay casos en los que fallaría y requeriría la intervención manual del usuario, lo que no es divertido para alguien que no conoce esta oscuridad. Idealmente, no quiero que el usuario tenga que especificar si su compilador esextraño o no a través de la línea de comandos; Quiero detectarlo automáticamente dentro de CMake, ya que este es el punto completo de CMake.

Respuestas a la pregunta(3)

Su respuesta a la pregunta