Может ли CMake определить, нужно ли мне ссылаться на libm при использовании pow в C?

С некоторыми компиляторами,с помощьюpow и некоторые другие функции в программе на C требуют ссылки наm библиотека, Тем не менее, некоторые компиляторы не требуют этого и выдают ошибку при соединении сm библиотека. Практически идентичная ситуация существует для C ++ сstd::thread а такжеpthread, но модуль CMakeFindThreads полностью облегчает это - есть ли подобный модуль для libm?

Как лучше всего определить, что делать с CMake? Это мое текущее решение, которое далеко не идеально, потому что компиляторов Си гораздо больше, чем просто GCC и MSVC:

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

Это работает для моих целей, но я вполне уверен, что есть случаи, когда это не сработает и потребует ручного вмешательства пользователя, что не очень интересно для тех, кто не знает об этой неизвестности. В идеале я не хочу, чтобы пользователь указывал, является ли его компиляторстранный или не через командную строку; Я хочу обнаружить это автоматически в CMake, так как это весь смысл CMake.

Ответы на вопрос(3)

Ваш ответ на вопрос