如何使用CMake链接到C数学库? [英] How to link to the C math library with CMake?

查看:310
本文介绍了如何使用CMake链接到C数学库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将数学库添加到我的CMake文件中?此帖子引用添加了目标链接库,但我对C不太熟悉。其他帖子-有人可以举一个例子。 文档我正在使用C,并且收到使用数学标头的pow方法对'pow'的未定义引用。

How do I add the math library to my CMake file? This post references adding a target link library, yet I am not too familiar with C. An Additional post - Could someone please demonstrate an example. Documentation I am using C and I receive an undefined reference to 'pow' with the pow method of the math header.

cmake_minimum_required(VERSION 3.3)
project(CSCI-E-28-Unix-Linux-Systems-Programming)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES
    CMakeLists.txt
    getchar.c
    main.cpp
        hw0
    more01.c)

#target_link_libraries(<math.h> m)

add_executable(main main.cpp)
add_executable(getchar getchar.c)
add_executable(more01 more01.c)
add_executable(argu print_all_arguments.c)
add_executable(chars chars.c)
add_executable(ch4 ch4.c)


推荐答案

许多数学函数( pow sqrt fabs log 等)在 math.h 需要库 libm 进行链接。与自动链接的 libc 不同, libm 是一个单独的库,通常需要显式链接链接器假定所有库都以 lib ,因此要链接到 libm ,您应链接到 m

Many mathematical functions (pow, sqrt, fabs, log etc.) are declared in math.h and require the library libm to be linked. Unlike libc, which is automatically linked, libm is a separate library and often requires explicit linkage. The linker presumes all libraries to begin with lib, so to link to libm you link to m.

您必须像 target_link_libraries(ch4 m)一样使用它来链接 libm 到目标。第一个参数必须是目标。因此,必须在 add_executable(ch4 ch4.c)之后使用,例如:

You have to use it like target_link_libraries(ch4 m) to link libmto your target. The first argument must be a target. Thus it must be used after add_executable(ch4 ch4.c) like:

add_executable(ch4 ch4.c)
target_link_libraries(ch4 m)

这篇关于如何使用CMake链接到C数学库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆