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