Ich versuche, Flex für ein Projekt zu verwenden, und ich versuche, CMake zu verwenden, um Flex mit meinem Projekt zu verknüpfen. Ich habe einen FindFLEX.cmake online gefunden, den ich dafür benutze. Sie können es here finden. Das sollte standardmäßig in CMake sein, aber ich glaube nicht, dass es so war. Meine Verzeichnisstruktur ist alsGet CMake, Flex unter Windows zu finden
root
---src
---CMakeLists.txt
---cmake
---Modules
---FindFLEX.cmake
---build
---external
---flex - Where flex is installed
---bin
---flex.exe
---lib
---libfl.a
/My src folgt CMakeLists.txt als
istcmake_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 von FindFLEX.cmake zur Verfügung gestellt werden soll folgt, wenn es das Paket Flex findet. Ausführen des folgenden Befehls in build/Verzeichnis didnt die Flex-Pakete
build> cmake ..\src
Dann habe ich das Präfix finden und arbeitete teilweise
build> cmake -DCMAKE_PREFIX_PATH=c:\root\external\flex\ ..\src
dass die ausführbare Datei flex.exe gefunden, aber nicht die Bibliothek. Die relevanten Teile FindFLEX.cmake wird unter
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})
gezeigt, dass die Botschaft, die ich auf Cmake bekommen läuft
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!
Kann mir jemand sagen, warum ich die Flex binäre bin zu finden, aber nicht die Bibliothek nach der einschließlich Vorwahlpfad? Jede Hilfe wäre willkommen.
Dank
Geht es um das Adobe/Apache UI Framework Flex? ODER der Lexikalische Analysator? Oder etwas anderes namens Flex? – JeffryHouser
Ich bin mir nicht sicher, ob das der relevante Teil von FindFLEX.cmake ist ... können Sie den Teil anzeigen, der versucht, die Bibliothek zu finden? Wie unterscheidet es sich von dem Teil, der die ausführbare Datei findet? – SethMMorton
@ Reboog711: Es ist der Lexical Analyzer –