对于某些编译器,在 C 程序中使用pow
和某些其他函数需要链接到m
库。但是,一些编译器不需要这样做,并且在链接到m
库时会出错。std::thread
使用and的 C++ 存在几乎相同的情况pthread
,但 CMake 模块FindThreads
完全缓解了这种情况 - libm 是否有一些类似的模块?
检测如何使用 CMake 的最佳方法是什么?这是我目前的解决方案,它不太理想,因为 C 编译器不仅仅是 GCC 和 MSVC:
if(NOT MSVC)
target_link_libraries(my-c-target PUBLIC m)
endif()
这适用于我的目的,但我很确定在某些情况下它会失败并需要手动用户干预,这对于不了解这种默默无闻的人来说并不有趣。理想情况下,我不希望用户必须通过命令行指定他们的编译器是否奇怪;我想在 CMake 中自动检测它,因为这是 CMake 的重点。