我想将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()
答案 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 未缓存,因此您可能无法重新定义它以影响脚本。