Я работаю над библиотекой 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.