Добавление флагов компоновщика для CHECK_FUNCTION_EXIST - PullRequest
0 голосов
/ 26 марта 2020

Я работаю над библиотекой libwebsockets, сценарий сборки которой, кажется, написан в CMakeLists.txt, et c. Я новичок в cmake. Я полагаю, что libwebsockets - это библиотека C.

Короче говоря, я хотел бы добавить опцию -L, когда CMake работает с этой строкой файла CMakeLists.txt:

CHECK_FUNCTION_EXISTS(SSL_CTX_set_ciphersuites LWS_HAVE_SSL_CTX_set_ciphersuites)

Или просто в качестве примера. :

CHECK_FUNCTION_EXISTS(foo)

Я смог заметить, что в CMake есть файл. c в / usr / share / cmake- / Modules. У него есть эта строка в главной функции:

int main( /* some args */ ) {
 CHECK_FUNCTION_EXIST();
}

Насколько я понимаю, для того, чтобы CMake узнал, доступна ли функция или нет, CMake компилирует файл. c с -DCHECK_FUNCTION_EXIST = foo и проводит связывание. Когда компоновщик (например, g cc, clang) выполняет свою работу, CMake предоставляет набор опций компоновщика в соответствии с настройками - например, -lssl, -lm, et c, в моем случае. Если «foo» не найден, связывание завершается ошибкой с «неопределенной ссылкой на foo». Это заставляет CMake полагать, что функция недоступна. Если связывание успешно, CMake, кажется, приходит к выводу, что функция доступна.

Я бы хотел добавить параметр -L к параметрам компоновщика на этом шаге. Например. clang или g cc должны ссылаться на мой локальный libssl, а не на общеустановленный. Для пояснения, мне не нужно собирать мои libwebsockets самостоятельно через CMake. Мне просто нужен файл lws_config * .h, который является некоторыми из выводов команды cmake ... Другими словами, я не буду запускать make -j 10, а затем cmake ... Мне придется бежать только cmake ...

Я попытался установить CMAKE_{EXE,STATIC,SHARED}_LINKER_FLAGS. Хотя установка CMAKE_C_FLAGS добавляла опции -I по желанию, эти три опции LINKER не добавляли опцию -L. Как правильно достичь моей цели?

Моя версия cmake - 3.15.4.

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