首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cmake命令语法问题

cmake命令语法问题
EN

Stack Overflow用户
提问于 2010-03-22 10:33:20
回答 3查看 4.3K关注 0票数 9

我需要一个CMAKE宏的语法,该宏从像lex/yacc这样的工具中生成.cc和.h文件。

有谁能给我看看下面这个设计的例子的语法:

假设我有一个依赖于y.cc和x.h的文件x.cc,上面提到的两个文件是由x.z文件中的工具z_tool生成的。这样做的语法是什么?

对于这个示例,假设y.cc将被转换为一个静态库,并且由于我对CMAKE非常陌生,这个精心设计的示例的完整CMakellist.txt将非常有用,我正在寻找一个可移植的解决方案,因为我使用的工具可以在windows和UNIX变体上使用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-22 12:55:18

与其给出一个人为的示例的答案,不如使用flex野牛生成一个可执行文件

代码语言:javascript
运行
复制
find_package(BISON)
find_package(FLEX)

BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cc)
FLEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BINARY_DIR}/lexer.cc)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(Foo
  Foo.cc
  ${BISON_MyParser_OUTPUTS}
  ${FLEX_MyScanner_OUTPUTS})
target_link_libraries(Foo ${FLEX_LIBRARIES} ${BISON_LIBRARIES})

bison/flex的CMake查找包包含在默认安装中,因此这是跨平台的。

通常,要创建一个稍后将用作输入的输出,您可以使用命令函数。如果您使用自定义命令的输出作为库或可执行文件的输入,那么CMake知道在编译库/可执行目标的源之前运行自定义命令。

票数 16
EN

Stack Overflow用户

发布于 2012-11-20 05:20:34

下一行有台风

代码语言:javascript
运行
复制
FLEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BIANRY_DIR}/lexer.cc)

BIANRY应拼写为二进制

注意: CMake文档中也有这个错误。(在2.8.0中,这一点在2.8.10文档中得到了修正)。

票数 1
EN

Stack Overflow用户

发布于 2013-01-23 18:21:39

/*让它在我的Mac上和狮子一起工作。我将文件名更改为y.tab.c和lax.yy.c,这是如果从命令行运行lex lex.l和yacc -D yacc.y的输出文件。见下文。*/

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 2.8)
project (LexYacc)

find_package(BISON)
find_package(FLEX)

BISON_TARGET(MyParser yacc.y ${CMAKE_CURRENT_BINARY_DIR}/y.tab.c) 
FLEX_TARGET(MyScanner lex.l  ${CMAKE_CURRENT_BINARY_DIR}/lex.yy.c)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(LexYacc
  ${BISON_MyParser_OUTPUTS}
  ${FLEX_MyScanner_OUTPUTS})
target_link_libraries(LexYacc ${FLEX_LIBRARIES} ${BISON_LIBRARIES})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2491421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档