Что означает значение 'set (CMAKE_REQUIRED_LIBRARIES "m") "в CMake Tutorial? - PullRequest
1 голос
/ 02 апреля 2020

Я изучаю CMake с помощью CMake Tutorial и обнаружил кое-что, что мне не понятно:

include(CheckSymbolExists)
set(CMAKE_REQUIRED_LIBRARIES "m")

Так что же такое CheckSymbolExists? Это функция или библиотека? Что означает "м"? Означает ли это имя lib или какой-то флаг?

Я пытался прочитать документы cmake, но я просто не понимаю. Пожалуйста, кто-нибудь, помогите мне понять это.

1 Ответ

0 голосов
/ 02 апреля 2020

Во-первых, set(CMAKE_REQUIRED_LIBRARIES "m") включает в себя математическую библиотеку. Вы делаете то же самое в командной строке следующим образом: gcc test.c -lm, который включает в себя библиотеку libm.so/.dll

CheckSymbolExists - это модуль CMake, который предоставляет больше функциональных возможностей. Вы можете включить его в include(CheckSymbolExists) После этого вы можете использовать функцию check_symbol_exists(...) в CMake для проверки наличия символов в файлах заголовков.

Точный пример из учебника: check_symbol_exists(log "math.h" HAVE_LOG) проверяет, является ли заголовок Файл math.h имеет символ (может быть функцией, константой или чем-то еще), который называется log. Если он есть, переменная CMake HAVE_LOG устанавливается в 1, в противном случае устанавливается в 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...