cmake_minimum_required (VERSION 3.2) # generate nlopt.f from nlopt.h enums file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/nlopt.f "") file (STRINGS ${API_SOURCE_DIR}/nlopt.h NLOPT_H_LINES REGEX " NLOPT_[A-Z0-9_]+") set (i 0) foreach (NLOPT_H_LINE ${NLOPT_H_LINES}) if (NOT NLOPT_H_LINE MATCHES "NLOPT_NUM_") string (REGEX REPLACE ".*NLOPT_([A-Z0-9_]+).*" "\\1" ENUM_STRING ${NLOPT_H_LINE}) string (REGEX REPLACE ".*NLOPT_[A-Z0-9_]+ = (-?[0-9]+).*" "\\1" ENUM_VAL ${NLOPT_H_LINE}) if (ENUM_VAL MATCHES "^-?[0-9]+$") set (i ${ENUM_VAL}) endif () set (ENUM_LINE " integer NLOPT_${ENUM_STRING}\n parameter (NLOPT_${ENUM_STRING}=${i})\n") file (APPEND ${CMAKE_CURRENT_BINARY_DIR}/nlopt.f "${ENUM_LINE}") # https://public.kitware.com/Bug/print_bug_page.php?bug_id=8996 if (i MATCHES "^-") math (EXPR i "1 ${i}") else () math (EXPR i "${i} + 1") endif () endif () endforeach ()