最近,在使用cmake构建一个C项目时,项目调用了数学库函数,即<math.h>中的数学函数,如pow等,CMakeLists.txt是这样的:
cmake_minimum_required(VERSION 3.10)
project(hello)
add_executable(hello main.c testfun.c testfun.h)
构建时,总是不成功,提示,testfun.c中有为定义的引用pow,可是我检查了,发现有保护math.h头文件.
最后找了老半天,才搞清楚原因,默认情况下,C语言编译器只考虑标准库,而math库不被当作标准库,因此无法链接到可执行文件hello中,为此,只需要在上面末尾加入如下一行,即可满足需求:
target_link_libraries(hello m)
其中,第2个参数m表示链接libm(即数学库)