Bison & Flex cmake 配置
Bison & Flex cmake configuration
我有管理我的 bison&flex&c++ 项目构建的 Makefile 文件:
CFLAGS = -g
all: cppcalc
cppcalc: cppcalc.lex.o cppcalc.tab.o
c++ -g -o $@ cppcalc.tab.o cppcalc.lex.o -lm
cppcalc.lex.o: cppcalc.lex.c cppcalc.tab.hh cppcalc-ctx.hh
c++ -c $<
cppcalc.tab.o: cppcalc.tab.cc cppcalc-ctx.hh klasa.hh
cppcalc.lex.c: cppcalc.l
flex -ocppcalc.lex.c cppcalc.l
cppcalc.tab.cc cppcalc.tab.hh: cppcalc.yy
bison -vd cppcalc.yy
这一切正常。我想将这种想法转换为 cmake。现在我在下面写了类似这样的东西,但是在我输入 make 之后出现错误,我不知道出了什么问题:
cmake_minimum_required(VERSION 2.8)
find_package(BISON)
find_package(FLEX)
BISON_TARGET(MyParser cppcalc.yy ${CMAKE_CURRENT_BINARY_DIR}/cppcalc.tab.cc COMPILE_FLAGS -vd)
FLEX_TARGET(MyScanner cppcalc.l ${CMAKE_CURRENT_BINARY_DIR}/cppcalc.lex.c)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(Foo
${BISON_MyParser_OUTPUTS}
${FLEX_MyScanner_OUTPUTS}
cppcalc-ctx.hh
klasa.hh
)
cmake_minimum_required(VERSION 2.8)
find_package(BISON 2.4.1)
find_package(FLEX 2.5.35)
BISON_TARGET(MyParser cppcalc.yy ${CMAKE_CURRENT_BINARY_DIR}/cppcalc.tab.cpp)
FLEX_TARGET(MyScanner cppcalc.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_executable(Calc
${BISON_MyParser_OUTPUTS}
${FLEX_MyScanner_OUTPUTS}
)
我有管理我的 bison&flex&c++ 项目构建的 Makefile 文件:
CFLAGS = -g
all: cppcalc
cppcalc: cppcalc.lex.o cppcalc.tab.o
c++ -g -o $@ cppcalc.tab.o cppcalc.lex.o -lm
cppcalc.lex.o: cppcalc.lex.c cppcalc.tab.hh cppcalc-ctx.hh
c++ -c $<
cppcalc.tab.o: cppcalc.tab.cc cppcalc-ctx.hh klasa.hh
cppcalc.lex.c: cppcalc.l
flex -ocppcalc.lex.c cppcalc.l
cppcalc.tab.cc cppcalc.tab.hh: cppcalc.yy
bison -vd cppcalc.yy
这一切正常。我想将这种想法转换为 cmake。现在我在下面写了类似这样的东西,但是在我输入 make 之后出现错误,我不知道出了什么问题:
cmake_minimum_required(VERSION 2.8)
find_package(BISON)
find_package(FLEX)
BISON_TARGET(MyParser cppcalc.yy ${CMAKE_CURRENT_BINARY_DIR}/cppcalc.tab.cc COMPILE_FLAGS -vd)
FLEX_TARGET(MyScanner cppcalc.l ${CMAKE_CURRENT_BINARY_DIR}/cppcalc.lex.c)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(Foo
${BISON_MyParser_OUTPUTS}
${FLEX_MyScanner_OUTPUTS}
cppcalc-ctx.hh
klasa.hh
)
cmake_minimum_required(VERSION 2.8)
find_package(BISON 2.4.1)
find_package(FLEX 2.5.35)
BISON_TARGET(MyParser cppcalc.yy ${CMAKE_CURRENT_BINARY_DIR}/cppcalc.tab.cpp)
FLEX_TARGET(MyScanner cppcalc.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_executable(Calc
${BISON_MyParser_OUTPUTS}
${FLEX_MyScanner_OUTPUTS}
)