Próbuję użyć flex na projekcie i próbuję użyć CMake, aby połączyć flex z moim projektem. Znalazłem FindFLEX.cmake online, którego używam do tego. Możesz go znaleźć here. To miało być domyślnie w CMake, ale nie sądzę, że tak było. Moja struktura katalogów jest następującaUzyskiwanie CMake, aby znaleźć flex na Windows
root
---src
---CMakeLists.txt
---cmake
---Modules
---FindFLEX.cmake
---build
---external
---flex - Where flex is installed
---bin
---flex.exe
---lib
---libfl.a
Moje SRC/CMakeLists.txt jest następujący
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
message(${CMAKE_MODULE_PATH})
set(project_name "try_flex")
message(${project_name})
project(${project_name})
find_package(FLEX)
FLEX_TARGET(Mylexer tokenize.lex ${CMAKE_CURRENT_BINARY_DIR}/tokenize.cpp)
add_executable(${project_name} ${FLEX_Mylexer_OUTPUTS})
target_link_libraries(${project_name} ${FLEX_LIBRARIES})
FLEX_TARGET ma być dostarczone przez FindFLEX.cmake gdy znajdzie pakiet Flex. Uruchamiając następującą komendę w katalogu build/zrobił znaleźć wyginanie pakiety
build> cmake ..\src
Potem dodaje prefiks i że pracował częściowo
build> cmake -DCMAKE_PREFIX_PATH=c:\root\external\flex\ ..\src
że znalazł wykonywalny flex.exe, ale nie z biblioteki. Odpowiednie fragmenty FindFLEX.cmake przedstawiono poniżej
FIND_PROGRAM(FLEX_EXECUTABLE flex DOC "path to the flex executable")
message("DEBUG:"${FLEX_EXECUTABLE})
MARK_AS_ADVANCED(FLEX_EXECUTABLE)
FIND_LIBRARY(FL_LIBRARY NAMES fl DOC "path to the fl library")
message("DEBUG:FL_LIBRARY"${FL_LIBRARY})
MARK_AS_ADVANCED(FL_LIBRARY)
SET(FLEX_LIBRARIES ${FL_LIBRARY})
wiadomość, którą dostać się na prowadzeniu cmake wynosi
DEBUG:c:/root/external/flex/bin/flex.exe
DEBUG:FL_LIBRARYFL_LIBRARY-NOTFOUND
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 file s:FL_LIBRARY (ADVANCED)
linked by target "try_flex" in directory C:/root/src
-- Configuring incomplete, errors occurred!
Czy ktoś może mi powiedzieć, dlaczego jestem znalezienie flex binarny, ale nie w tym biblioteki po ścieżka przedrostka? Każda pomoc będzie doceniona.
Dzięki
Czy chodzi tu o środowisko Adobe/Apache UI Framework Flex? LUB Analizator leksykalny? Lub coś innego o nazwie Flex? – JeffryHouser
Nie jestem pewien, czy to odpowiednia część FindFLEX.cmake ... czy możesz pokazać część, która próbuje zlokalizować bibliotekę? Czym różni się od tej części, która lokalizuje plik wykonywalny? – SethMMorton
@ Reboog711: To jest Lexical Analyzer –