macro(PIP_EXTRACT_OPTIONS _pip_files _pip_options _abs) set(${_pip_files}) set(${_pip_options}) set(_PIP_DOING_OPTIONS FALSE) foreach(_currentArg ${ARGN}) if("x${_currentArg}" STREQUAL "xABSOLUTE") set(${_abs} TRUE) else() 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() endif() endforeach() endmacro() macro(pip_code_model RESULT) PIP_EXTRACT_OPTIONS(CCM_SRC OPTS ABS ${ARGN}) #message(STATUS "src = ${CCM_SRC}") #message(STATUS "result = ${RESULT}") #message(STATUS "options = \"${CCM_OPTS}\"") set(CMG_INCLUDES) foreach(pi ${PIP_INCLUDES}) list(APPEND CMG_INCLUDES "-I${pi}") endforeach() set(CCM_OUT ${CMAKE_CURRENT_BINARY_DIR}/ccm_${PROJECT_NAME}.cpp) set(${RESULT} ${${RESULT}} ${CCM_OUT}) set(CCM_FILES) if (ABS) foreach(csrc ${CCM_SRC}) list(APPEND CCM_FILES "${csrc}") endforeach() else() foreach(csrc ${CCM_SRC}) list(APPEND CCM_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${csrc}") endforeach() endif() #message(STATUS "CCM = ${RESULT}") if(NOT DEFINED PIP_DLL_DIR) set(PIP_DLL_DIR ${CMAKE_CURRENT_BINARY_DIR}) endif() add_custom_command(OUTPUT ${CCM_OUT} COMMAND ${PIP_CMG} ARGS -q ${OPTS} -o ${CMAKE_CURRENT_BINARY_DIR}/ccm_${PROJECT_NAME} ${CMG_INCLUDES} ${CCM_FILES} DEPENDS ${CCM_SRC} WORKING_DIRECTORY ${PIP_DLL_DIR} COMMENT "Generating ccm_${PROJECT_NAME}.h, ccm_${PROJECT_NAME}.cpp" VERBATIM) endmacro()