web-dev-qa-db-fra.com

Comment créer un lien vers la bibliothèque mathématique C avec CMake?

Comment ajouter la bibliothèque math à mon fichier CMake? Cette publication fait référence à l'ajout d'une bibliothèque de liens cibles , mais je ne suis pas trop familier avec C. An Publication supplémentaire - Quelqu'un pourrait-il s'il vous plaît montrer un exemple. Documentation J'utilise C et je reçois un undefined reference to 'pow' avec la méthode pow de l'en-tête mathématique.

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

De nombreuses fonctions mathématiques (pow, sqrt, fabs, log etc.) sont déclarées dans math.h Et nécessitent le bibliothèque libm à lier. Contrairement à libc, qui est automatiquement lié, libm est une bibliothèque distincte et souvent nécessite un lien explicite . L'éditeur de liens suppose que toutes les bibliothèques commencent par lib , donc pour créer un lien vers libm, vous créez un lien vers m.

Vous devez l'utiliser comme target_link_libraries(ch4 m) pour lier libm à votre cible. Le premier argument doit être une cible. Il doit donc être utilisé après add_executable(ch4 ch4.c) comme:

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