cmake:如何使用bison的自定义可执行路径

时间:2016-11-28 16:14:21

标签: cmake

我想将cmake指向特定位置以在特定平台上查找Bison可执行文件。有没有办法做到这一点?

if(PLATFORM STREQUAL "Darwin")
  find_package(
    BISON 3.0.0 REQUIRED
    # Would like to do something like:
    PATH "/usr/local/opt/bison/bin/bison"
    )
else()
  find_package(
    BISON 3.0.0 REQUIRED
    )
endif()
if(BISON_FOUND)
  BISON_TARGET(
    Parser
    ${CMAKE_CURRENT_LIST_DIR}/Parser.yy
    ${CMAKE_CURRENT_BINARY_DIR}/Parser.cpp
    )
  target_sources(
    MyLib PRIVATE
    ${BISON_Parser_OUTPUTS}
    )
endif()

1 个答案:

答案 0 :(得分:1)

根据模块FindBISON.cmake的{​​{3}},此模块设置指向程序可执行文件的变量 BISON_EXECUTABLE

实际上,这是缓存变量,它被设置为具有documentation调用的脚本。因此,您可以手动为修复程序可执行文件设置此缓存变量:

if(PLATFORM STREQUAL "Darwin")
    set(BISON_EXECUTABLE "/usr/local/opt/bison/bin/bison" CACHE PATH "Bison executable")
endif()
...
find_package(BISON 3.0.0 REQUIRED)

请注意,

下不同脚本FindXXX.cmake的文档中列出的变量
  

模块定义以下变量:

不需要缓存,因此设置它们会影响结果。例如,FindBISON.cmake的相同文档中列出的变量 BISON_VERSION 未缓存,因此您可能无法重新定义它以影响脚本。