Windows не может найти FLEX_LIBRARIES

При использовании этого CMakeLists.txt

cmake_minimum_required(VERSION 3.17)
project(project_c)

set(CMAKE_CXX_STANDARD 11)

set(project_name project_c)

find_package(BISON)
find_package(FLEX)

BISON_TARGET(parser parser.y ${CMAKE_SOURCE_DIR}/parser.cpp)
FLEX_TARGET(lexer lexer.l ${CMAKE_SOURCE_DIR}/lexer.cpp)
ADD_FLEX_BISON_DEPENDENCY(lexer parser)

add_executable(${project_name} ${BISON_parser_OUTPUTS} ${FLEX_lexer_OUTPUTS})

target_include_directories(${project_name} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(${project_name} ${FLEX_LIBRARIES})

CMake жалуется на

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FL_LIBRARY (ADVANCED)
    linked by target "project_c" in directory D:/asant/workspace/CLionProjects/project_c

Я пытался скопировать папку winflex в папку проекта, но это все равно не поможет. Предлагаемое решение не работает.

Это полный журнал CMake

"C:\Program Files\JetBrains\CLion 2018.3.4\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" D:\asant\workspace\CLionProjects\project_c
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Check for working C compiler: C:/Qt/Tools/mingw810_64/bin/gcc.exe
-- Check for working C compiler: C:/Qt/Tools/mingw810_64/bin/gcc.exe - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Qt/Tools/mingw810_64/bin/g++.exe
-- Check for working CXX compiler: C:/Qt/Tools/mingw810_64/bin/g++.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found BISON: C:/Program Files (x86)/win_flex_bison-2.5.23/win_bison.exe (found version "3.7.1") 
-- Found FLEX: C:/Program Files (x86)/win_flex_bison-2.5.23/win_flex.exe (found version "2.6.4") 
-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FL_LIBRARY (ADVANCED)
    linked by target "project_c" in directory D:/asant/workspace/CLionProjects/project_c

-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

[Failed to reload]

person Antonio Santoro    schedule 04.12.2020    source источник
comment
папка winflex внутри папки проекта, но это все равно не поможет Она не будет искать ее по умолчанию, поэтому не поможет.   -  person drescherjm    schedule 04.12.2020
comment
Обычно нужно делать то, что написано в ошибке. Обычно над цитированной вами частью есть более подробное сообщение.   -  person drescherjm    schedule 04.12.2020
comment
@drescherjm Редактировал вопрос с полным журналом CMake   -  person Antonio Santoro    schedule 04.12.2020
comment
Возможно, вам придется посмотреть исходный код искателя.   -  person drescherjm    schedule 04.12.2020
comment
какой исходный код?   -  person Antonio Santoro    schedule 04.12.2020
comment
Для меня это: C:\Program Files\CMake\share\cmake-3.17\Modules. С учетом сказанного, похоже, что у вас есть CMake в другом месте, чем по умолчанию. Вероятно, он будет где-то здесь: C: \ Program Files \ JetBrains \ CLion 2018.3.4 \ bin \ cmake \ win \   -  person drescherjm    schedule 04.12.2020
comment
Внутри C:\Program Files\JetBrains\CLion 2018.3.4\bin\cmake\win\share\cmake-3.17\Modules нет файлов, ссылающихся на что-либо как на flex   -  person Antonio Santoro    schedule 04.12.2020
comment
Я говорю о FindFLEX.cmake на моем ПК Win10 с использованием CMake 3.17.5 путь: C:\Program Files\CMake\share\cmake-3.17\Modules\FindFLEX.cmake   -  person drescherjm    schedule 04.12.2020
comment
У меня нет такого файла   -  person Antonio Santoro    schedule 04.12.2020
comment
Обычно find_package используется с ключевым словом REQUIRED. Таким образом, если пакет не найден, CMake выдает ошибку немедленно и не обрабатывает остальную часть CMakeLists.txt. Ситуации, когда ключевое слово REQUIRED может быть опущено, - это ситуации, когда ваш проект может работать без пакета и проверяет переменную XXX_FOUND, чтобы определить, найден ли пакет. Это не ваш случай, поэтому добавьте REQUIRED к обоим вашим find_package вызовам. Сообщение об ошибке В этом проекте используются следующие переменные, но для них установлено значение NOTFOUND. всегда сигнализирует о плохом CMakeLists.txt.   -  person Tsyvarev    schedule 05.12.2020
comment
@Tsyvarev поместил REQUIRED в оба find_package и все равно получает то же сообщение   -  person Antonio Santoro    schedule 05.12.2020
comment
Хм, правда: скрипт FindFLEX.cmake проверяет успешность только при нахождении исполняемого файла Flex (FLEX_EXECUTABLE), но не проверяет наличие библиотек (FLEX_LIBRARIES). Так что это проблема FindFLEX.cmake скрипта, а не вашего CMakeLists.txt.   -  person Tsyvarev    schedule 05.12.2020
comment
В любом случае FL_LIBRARY содержит путь к библиотеке с именем fl. Если у вас установлена ​​эта библиотека в необычном месте, вы можете передать каталог с этой библиотекой через переменную CMAKE_LIBRARY_PATH. Например. с параметром -DCMAKE_LIBRARY_PATH=<dir-with-fl> при вызове cmake. Если это не помогает, нам нужна дополнительная информация о вашей гибкой установке. Например. что такое расширение библиотеки fl? (Или, лучше, точный путь, состоящий из каталога, имени файла и расширения).   -  person Tsyvarev    schedule 05.12.2020
comment
Единственное, что я сделал, это загрузил эту сборку flex / bison для Windows, поместил извлеченную папку на C : а затем добавьте путь к переменной среды PATH   -  person Antonio Santoro    schedule 05.12.2020
comment
@Tsyvarev Я загрузил libfl.lib файл из здесь и добавил ваш предложенный вариант, но он выводит то же сообщение об ошибке   -  person Antonio Santoro    schedule 05.12.2020
comment
Согласно этому ответу, MinGW не работает с .lib библиотеками. Он знает только .dll и .a. Наверное, нужно скачать libfl.a вместо libfl.lib. Настройка CMAKE_LIBRARY_PATH (или другой подсказки для CMake для поиска библиотеки в необычном месте) по-прежнему требуется.   -  person Tsyvarev    schedule 05.12.2020
comment
Та же ошибка, я использую параметр -DCMAKE_LIBRARY_PATH, указывающий на файл libfl.a   -  person Antonio Santoro    schedule 05.12.2020