find_program(JAVACC_EXECUTABLE NAMES javacc javaCC Javacc JavaCC javacc.bat DOC "path to the javacc executable") mark_as_advanced(JAVACC_EXECUTABLE) if(JAVACC_EXECUTABLE) set(JAVACC_FOUND 1) message(STATUS "The javacc executable: ${JAVACC_EXECUTABLE}") execute_process( COMMAND "${JAVACC_EXECUTABLE}" -version OUTPUT_VARIABLE JAVACC_TEMP_VERSION ) string(REGEX MATCH ".* ([0-9]+(\\.[0-9]+)+) .*" JAVACC_TEMP_VERSION2_UNUSED "${JAVACC_TEMP_VERSION}") if(CMAKE_MATCH_1) set(JAVACC_VERSION ${CMAKE_MATCH_1}) else() string(REGEX MATCH "([0-9]+(\\.[0-9]+)+)" JAVACC_TEMP_VERSION3_UNUSED "${JAVACC_TEMP_VERSION}") if(CMAKE_MATCH_1) set(JAVACC_VERSION ${CMAKE_MATCH_1}) else() message(STATUS "Unable to determine JavaCC version, using existing files") set(JAVACC_FOUND 0) endif() endif() else() set(JAVACC_FOUND 0) message(STATUS "The javacc executable not found, using existing files") endif()