diff --git a/PIPMacros2.cmake b/PIPMacros2.cmake index dde6d934..a600856f 100644 --- a/PIPMacros2.cmake +++ b/PIPMacros2.cmake @@ -1,33 +1,41 @@ +macro (PIP_EXTRACT_OPTIONS _pip_files _pip_options) + set(${_pip_files}) + set(${_pip_options}) + set(_PIP_DOING_OPTIONS FALSE) + foreach(_currentArg ${ARGN}) + if ("x${_currentArg}" STREQUAL "xOPTIONS") + set(_PIP_DOING_OPTIONS TRUE) + else () + if(_PIP_DOING_OPTIONS) + list(APPEND ${_pip_options} "${_currentArg}") + else() + list(APPEND ${_pip_files} "${_currentArg}") + endif() + endif () + endforeach() +endmacro () -macro (pip_code_model SRC RESULT) - set(RESULT "") - set(OPTS "") - set(_IS_OPT false) - foreach (_A ${ARGN}) - #message(STATUS ${_A}) - if (_IS_OPT) - list (APPEND OPTS ${_A}) - else () - if ("${_A}" STREQUAL "OPTIONS") - set(_IS_OPT true) - else () - set (RESULT ${_A}) - endif () - endif () +macro (pip_code_model RESULT) + PIP_EXTRACT_OPTIONS(CCM_SRC OPTS ${ARGN}) + set(CCM_OPTS) + foreach (it ${OPTS}) + set(CCM_OPTS "${CCM_OPTS} ${it}") endforeach() - #message(STATUS "src = ${CMAKE_CURRENT_SOURCE_DIR}/${SRC}") + message(STATUS "src = ${CCM_SRC}") #message(STATUS "result = ${RESULT}") - #message(STATUS "options = ${OPTS}") - set(${RESULT} ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm.cpp) - #message(STATUS "Res = ${${RESULT}}") - add_custom_command(OUTPUT ${RESULT} - COMMAND ${PIP_CMG} -qP ${OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/${SRC} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SRC} - VERBATIM) - #message(STATUS "Creating code model based on \"${SRC}\", please wait ... ") - #message(STATUS "exec \"-qP ${OPTS} -o ${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${SRC}\"") - #message(STATUS "exec ${PIP_CMG} -P ${OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/${SRC}") - #execute_process(OUTPUT_VARIABLE CMG_OUT COMMAND ${PIP_CMG} -qP ${OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/${SRC}) + message(STATUS "options = ${CCM_OPTS}") + set(CCM_OUT ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm.cpp) + set(${RESULT} ${${RESULT}} ${CCM_OUT}) + message(STATUS "CCM = ${CCM_OUT}") + add_custom_command(OUTPUT ${CCM_OUT} + COMMAND ${PIP_CMG} + ARGS -qP ${CCM_OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/${CCM_SRC} + DEPENDS ${CCM_SRC} + VERBATIM) + #message(STATUS "Creating code model based on \"${CCM_SRC}\", please wait ... ") + #message(STATUS "exec \"-qP ${CCM_OPTS} -o ${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CCM_SRC}\"") + message(STATUS "exec ${PIP_CMG} -qP ${CCM_OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/${CCM_SRC}") + #execute_process(OUTPUT_VARIABLE CMG_OUT COMMAND ${PIP_CMG} -qP ${CCM_OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ccm -I${PIP_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/${CCM_SRC}) #message(STATUS "Creating code model done, to use it include \"${PROJECT_NAME}_ccm.h\"") #message(STATUS ${CMG_OUT}) #message(STATUS ${CACHE_CMG_FILES})