web-dev-qa-db-ja.com

CMakeでC数学ライブラリにリンクする方法は?

mathライブラリをCMakeファイルに追加するにはどうすればよいですか?この posttarget link library を追加することを参照しますが、私はCにあまり詳しくありません。 Additional post -例を示してください。 ドキュメント Cを使用していますが、undefined reference to 'pow' mathヘッダーのpowメソッド。

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)
21
phillipsK

多くの数学関数(powsqrtfabslogなど)は_math.h_および ライブラリが必要です)で宣言されていますlibm リンクする。自動的にリンクされるlibcとは異なり、libmは別個のライブラリであり、多くの場合 明示的なリンケージが必要 です。 リンカはすべてのライブラリがlibで始まると仮定します なので、libmにリンクするにはmにリンクします。

libmをターゲットにリンクするには、target_link_libraries(ch4 m)のように使用する必要があります。最初の引数はターゲットでなければなりません。したがって、次のようにadd_executable(ch4 ch4.c)の後に使用する必要があります。

_add_executable(ch4 ch4.c)
target_link_libraries(ch4 m)
_
24
usr1234567